日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
兩個(gè)實(shí)例了解VB.NET特殊形狀窗體

#t#本人很喜歡VB.NET,在工作中也很喜歡總結(jié)關(guān)于VB.NET特殊形狀窗體的經(jīng)驗(yàn)教訓(xùn),下面就這個(gè)問(wèn)題來(lái)詳細(xì)說(shuō)說(shuō)吧。我們的目的是實(shí)現(xiàn)VB.NET特殊形狀窗體,VB6中實(shí)現(xiàn)(借助API函數(shù))做一個(gè)古怪的窗口必須要用的也是此程序中最重要的一個(gè)函數(shù)就是SetWindowRgn它的功能就是對(duì)指定的窗口進(jìn)行重畫,把這個(gè)窗口你選擇的部分留下其余的部分抹掉。

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有曲麻萊免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

VB.NET特殊形狀窗體參數(shù):
◆hWnd:你所要重畫的窗口的句柄,比如你想重畫form1則應(yīng)該讓此參數(shù)為form1.hWnd
◆hRgn:你要保留的區(qū)域的句柄,這個(gè)句柄是關(guān)鍵,你需要通過(guò)別的渠道來(lái)獲得在這里的區(qū)域是由Combinergn合成的新區(qū)域
◆bRedram:是否要馬上重畫,一般設(shè)為true
◆函數(shù)CombineRgn將兩個(gè)區(qū)域組合為一個(gè)新區(qū)域
◆函數(shù)Createrectrgn為創(chuàng)建一個(gè)由點(diǎn)X1,Y1和X2,Y2描述的矩形區(qū)域
◆函數(shù)CreateEllipticRgn為創(chuàng)建一個(gè)X1,Y1和X2,Y2的橢圓區(qū)域用DeleteObject這個(gè)函數(shù)可刪除GDI對(duì)象,比如畫筆、刷子、字體、位圖、區(qū)域以及調(diào)色板等等。對(duì)象使用的所有系統(tǒng)資源都會(huì)被釋放。

以下是VB6的代碼:

 
 
 
  1. PrivateDeclareFunction CreateEllipticRgn Lib "gdi32" (ByVal X1 AsLong, 
    ByVal Y1 AsLong, ByVal X2 AsLong, ByVal Y2 AsLong) AsLong  
  2. PrivateDeclareFunction CreateRectRgn Lib "gdi32" (ByVal X1 AsLong, 
    ByVal Y1 AsLong, ByVal X2 AsLong, ByVal Y2 AsLong) AsLong  
  3. PrivateDeclareFunction CombineRgn Lib "gdi32" (ByVal hDestRgn AsLong, 
    ByVal hSrcRgn1 AsLong, ByVal hSrcRgn2 AsLong, ByVal nCombineMode AsLong) AsLong  
  4. PrivateDeclareFunction SetWindowRgn Lib "user32" (ByVal hWnd AsLong, 
    ByVal hRgn AsLong, ByVal bRedraw AsBoolean) AsLong  
  5. PrivateDeclareFunction DeleteObject Lib "gdi32" (ByVal hObject AsLong) AsLong  
  6. PrivateConst RGN_DIFF = 4 
  7.  
  8. PrivateSub Form_Load()  
  9. Dim rgn AsLong  
  10. Dim rgnRect AsLong  
  11. Dim rgnDest AsLong  
  12.  
  13. rgn = CreateEllipticRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)  
  14. rgnRect = CreateRectRgn((Me.Width / Screen.TwipsPerPixelX - 20) / 2, 
    (Me.Height / Screen.TwipsPerPixelY - 20) / 2, (Me.Width / Screen.TwipsPerPixelX + 20) / 2, 
    (Me.Height / Screen.TwipsPerPixelY + 20) / 2)  
  15. rgnDest = CreateRectRgn(0, 0, 1, 1)  
  16. CombineRgn rgnDest, rgn, rgnRect, RGN_DIFF  
  17. SetWindowRgn Me.hWnd, rgnDest, True  
  18. Call DeleteObject(rgnRect)  
  19. Call DeleteObject(rgnDest)  
  20. EndSub  
  21.  
  22. PrivateSub Command1_Click()  
  23. End  
  24. EndSub 

在VB.NET中,我們可以使用.NET 框架類庫(kù)System.Drawing.Drawing2D的GraphicsPath 類(應(yīng)用程序使用路徑來(lái)繪制形狀的輪廓、填充形狀內(nèi)部和創(chuàng)建剪輯區(qū)域),來(lái)繪制圖形,然后通過(guò)VB.NET特殊形狀窗體的Me.Region來(lái)設(shè)置窗口的可見區(qū)域。

以下是VB.NET的代碼:

 
 
 
  1. '聲明一個(gè)布爾型變量,判斷窗體是否正常區(qū)域  
  2. Dim IsNormalRegion AsBoolean = True   
  3. PrivateSub Button2_Click(ByVal sender As System.Object, 
    _ByVal e As System.EventArgs) Handles Button2.Click  
  4. If (IsNormalRegion) Then  
  5. '構(gòu)造一個(gè)GraphicsPath對(duì)象實(shí)例  
  6. Dim Graphics AsNew System.Drawing.Drawing2D.GraphicsPath()  
  7. Dim intHeight AsInteger = Me.Size.Height  
  8. Dim intWidth AsInteger = Me.Size.Width  
  9. '定義內(nèi)矩形的左上角坐標(biāo)  
  10. Dim RectTop AsInteger = 100 
  11. '在窗體上繪制一個(gè)大橢圓,左上角的坐標(biāo)取為(0,0)  
  12. Graphics.AddEllipse(0, 0, intWidth, intHeight)  
  13. '再繪制一個(gè)小矩形  
  14. Dim AddRect AsNew Rectangle(RectTop, RectTop, 
    intHeight - (RectTop * 2), intHeight - (RectTop * 2))  
  15. Graphics.AddRectangle(AddRect)  
  16. '設(shè)置窗口的可見區(qū)域  
  17. Me.Region = New Region(Graphics)  
  18. Else  
  19. Me.Region = Nothing 
  20. EndIf  
  21. IsNormalRegion = Not IsNormalRegion  
  22. EndSub 

文章標(biāo)題:兩個(gè)實(shí)例了解VB.NET特殊形狀窗體
標(biāo)題路徑:http://www.dlmjj.cn/article/cdijpho.html