扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網(wǎng)站建設
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語言 >> 文章正文

用vb制作文字窗體

我們知道,通常WINDOWS的窗體大都是矩形的。當然也可以使用API函數(shù)制作橢圓型的、三角型的窗體,還可以制作圖片窗體。下面我給大家介紹一種制作文字、字符窗體的方法,希望能對大家有所幫助。
要想制作文字窗體就要用到WINDOWS的幾個API函數(shù),首先我們來看看這幾個函數(shù)的功能:
1、 GetPixel (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) 函數(shù)
函數(shù)功能:取得一個像素的RGB值
參數(shù):hdc ,設備場景的句柄
      x,y ,邏輯坐標中的點
2: CreateRectRgn (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long)
函數(shù)功能:創(chuàng)建一個由點X1,Y1和X2,Y2描述的矩形區(qū)域
參數(shù):x1,y1,矩形左上角X,Y坐標
      x2,y2,矩形右下角X,Y坐標
3:Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
函數(shù)功能:將兩個區(qū)域組合為一個新區(qū)域
參數(shù):hDestRgn,結(jié)果區(qū)域句柄
      hSrcRgn1,源區(qū)域1
      hSrcRgn2,源區(qū)域2
      nCombineMode,合并模式
4:Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
函數(shù)功能:設置窗口的區(qū)域
參數(shù):hWnd ,窗口句柄
      hRgn,將設置的區(qū)域的句柄
      bRedraw ,是否立即重畫窗口

    在文字窗體的設計中應當先是選定一種屏蔽色作為窗體的背景色(當然這種顏色應當是窗體
圖形中所沒有的顏色),然后利用了一個字符數(shù)組,將設計好的圖形存儲在里面,之后將圖形輸
出在窗體上。最后用GetPixel函數(shù)掃描窗體上已經(jīng)輸出字符的區(qū)域,將窗體上與屏蔽色不同的區(qū)
域標記出來,并且用CreateRectRgn函數(shù)創(chuàng)建成矩形區(qū)域,再將它們用CombineRgn函數(shù)合并成一
個區(qū)域,之后用SetWindowRgn函數(shù)設置窗體區(qū)域并生成窗體。

屬性設置:新建一個窗體(CAPTION->"制作文字窗體";NAME=FORM1;AUTOREDRAW->TRUE;
SCALEMODE->1;BACKCOLOR->屏蔽色)窗體字體和前景色可根據(jù)需要設置,也可以在代碼中設置。


以下是程序源代碼:
------------- API函數(shù)聲明---------------------
Option Explicit
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc   Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
-------------常量-------------
Const RGN_OR = 2
------------- 變量-------------
Dim oldx As Integer
Dim oldy As Integer
Dim rgn As Long
Dim MaskColor As Long

Private Sub Form_Load()
MaskColor=Form1.BackColor
CreateForm
End Sub

'-------生成文字窗體-------
Public Sub CreateForm()
Const max = 5   '字符行數(shù)即窗體圖形數(shù)組的最大值
Dim graphics(max) As String '存儲窗體圖形
Dim X As Long
Dim Y As Long
Dim count As Long  '相同像素數(shù)
Dim curpixels As Long   '當前檢查像素
Dim temp As Long
Dim textheight As Long '掃描區(qū)域的高度
Dim textwidth As Long '掃描區(qū)域的寬度
Dim i As Integer
Dim maxwidth As Long  '窗體的最大寬度

Me.CurrentX = 0
Me.CurrentY = 0
'-------初始化窗體圖形,可根據(jù)自己的需要設計出多種樣式-------------
graphics(0) = "     ★"
graphics(1) = "    ★★"
graphics(2) = "   ◎▲◎"
graphics(3) = "  ★★★★"
graphics(4) = " ★■■■★"
graphics(5) = "哈哈文字窗體 "
'--------輸出窗體圖形------------
maxwidth = Me.textwidth(graphics(0))
For i = 0 To max
     If Me.textwidth(graphics(i)) >= maxwidth Then
        maxwidth = Me.textwidth(graphics(i))
     End If
     textheight = textheight + Me.textheight(graphics(i))
     '-----設置圖形顏色-----------
     If i Mod 2 = 0 Then
        Me.ForeColor = vbBlue
     Else
        Me.ForeColor = vbRed
     End If
    
     Me.Print graphics(i)
     '-----根據(jù)文字大小自動縮放窗體------
     If Me.Height < textheight Then
        Me.Height = textheight + 500
     End If
     If Me.Width < maxwidth Then
        Me.Width = maxwidth + 500
     End If
Next i

textheight = Int(textheight / 15)
textwidth = Int(maxwidth / 15)

RGN = CreateRectRgn(0, 0, 0, 0)   '創(chuàng)建空區(qū)域
For Y = 0 To textheight - 1
    count = 0
    For X = 0 To textwidth - 1
        curpixels = GetPixel(Form1.hdc, X, Y)
       
        If X >= textwidth - 1 And count > 0 Then
           temp = CreateRectRgn(X + Int((Me.Width - Me.ScaleWidth) \ 30) - count, Y + Int((Me.Height - Me.ScaleHeight) \ 15) - Int((Me.Width - Me.ScaleWidth) \ 30), X + Int((Me.Width - Me.ScaleWidth) \ 30), Y + Int((Me.Height - Me.ScaleHeight) \ 15) - Int((Me.Width - Me.ScaleWidth) \ 30) + 1) '創(chuàng)建區(qū)域
           CombineRgn RGN, RGN, temp, RGN_OR '合并兩個區(qū)域
           DeleteObject temp
        End If
       
        If curpixels <> MaskColor Then
           count = count + 1
        Else
           If count > 0 Then
              temp = CreateRectRgn(X + Int((Me.Width - Me.ScaleWidth) \ 30) - count, Y + Int((Me.Height - Me.ScaleHeight) \ 15) - Int((Me.Width - Me.ScaleWidth) \ 30), X + Int((Me.Width - Me.ScaleWidth) \ 30), Y + Int((Me.Height - Me.ScaleHeight) \ 15) - Int((Me.Width - Me.ScaleWidth) \ 30) + 1)
              CombineRgn RGN, RGN, temp, RGN_OR
              DeleteObject temp
           End If
           count = 0
        End If
    Next X
Next Y
SetWindowRgn Me.hwnd, RGN, True '設置窗體區(qū)域
End Sub


Private Sub Form_DblClick()
End
End Sub

'-----移動窗體代碼------

Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
oldx = X
oldy = Y
End If
End Sub

Private Sub form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
    If X <> oldx Or Y <> oldy Then
    Form1.Left = Form1.Left + (X - oldx)
    Form1.Top = Form1.Top + (Y - oldy)
    End If
End If
End Sub

作者:新疆二域… | 文章來源:本站原創(chuàng) | 更新時間:2007-10-23 11:12:20

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    VB如何調(diào)用EXCEL 對象更改單元格中的內(nèi)容
    VB6.0的3種類型的數(shù)據(jù)庫訪問方式介紹
    在VB中移動當前記錄的方法
    VB編程中的If函數(shù)
    軟件技術
    · 開發(fā)語言
    · Java技術
    · .Net技術
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項目開發(fā)中應該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項目經(jīng)理有那些
    ·學習如何在Lambda表達式進
    ·C++基礎知識:結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補了一部分java的
    ·rss定制的另外一種實現(xiàn)方式
    ·delphi實現(xiàn)利用arp欺騙來實
    ·基礎學習:基于WF的流程框
    ·網(wǎng)絡編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過程中的性能設計
    關于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    台东县| 乌拉特后旗| 雷山县| 贵定县| 怀柔区| 勃利县| 阿拉善右旗| 慈利县| 灵山县| 临海市| 久治县| 池州市| 玛纳斯县| 封开县| 克什克腾旗| 介休市| 德庆县| 百色市| 高州市| 内丘县| 甘德县| 彭州市| 永登县| 托里县| 深水埗区| 改则县| 陕西省| 博罗县| 汕尾市| 浮梁县| 嘉祥县| 黄大仙区| 乐都县| 双桥区| 通州区| 米易县| 靖州| 启东市| 开平市| 上思县| 剑河县|