成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

兩個實例了解VB.NET特殊形狀窗體

開發(fā) 后端
這里介紹們的目的是實現(xiàn)VB.NET特殊形狀窗體,VB6中實現(xiàn)做一個古怪的窗口必須要用的也是此程序中最重要的一個函數(shù)就是SetWindowRgn它的功能就是對指定的窗口進(jìn)行重畫,把這個窗口你選擇的部分留下其余的部分抹掉。

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

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

以下是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 框架類庫System.Drawing.Drawing2D的GraphicsPath 類(應(yīng)用程序使用路徑來繪制形狀的輪廓、填充形狀內(nèi)部和創(chuàng)建剪輯區(qū)域),來繪制圖形,然后通過VB.NET特殊形狀窗體的Me.Region來設(shè)置窗口的可見區(qū)域。

以下是VB.NET的代碼:

  1. '聲明一個布爾型變量,判斷窗體是否正常區(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)造一個GraphicsPath對象實例  
  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. '在窗體上繪制一個大橢圓,左上角的坐標(biāo)取為(0,0)  
  12. Graphics.AddEllipse(0, 0, intWidth, intHeight)  
  13. '再繪制一個小矩形  
  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 
責(zé)任編輯:佚名 來源: 博客
相關(guān)推薦

2010-01-11 15:12:30

VB.NET特殊窗體

2009-11-03 17:31:01

VB.NET窗體

2010-01-11 15:31:04

VB.NET拖動窗體

2009-04-30 13:24:45

VB.NET 2008窗體應(yīng)用實例

2009-10-16 09:35:24

VB.NET制作透明窗

2010-01-13 09:31:39

VB.NET窗體打印

2009-10-14 13:56:05

VB.NET數(shù)據(jù)窗體

2009-10-09 16:54:03

VB.NET窗體

2009-10-14 15:20:21

VB.NET窗體指針

2009-10-14 15:34:29

VB.NET窗體編程模

2010-01-20 17:54:13

VB.NET特殊字符

2009-10-26 17:53:50

VB.NET新窗體

2009-11-10 15:07:11

VB.NET窗體

2010-01-13 15:52:59

VB.NET浮動窗體

2009-10-28 13:23:52

VB.NET可選參數(shù)

2009-10-30 13:31:06

VB.NET名空間

2009-10-29 14:04:48

VB.NET Deri

2009-11-02 10:42:04

VB.NET EXCE

2009-10-14 14:50:16

VB6.0VB.NET

2009-10-28 14:34:44

VB.NET Tree
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 先锋资源吧 | 久久久久久国产精品免费免费男同 | 久草久草久草 | 国产成人高清视频 | 日韩精品在线一区 | 日韩一区二区三区视频 | 国产精品一二三区 | 国产福利91精品 | 国产高清在线精品 | 国产在线精品一区二区 | 在线国产精品一区 | 久久久久久久久久久久久久av | 免费的色网站 | 久久精品亚洲 | 国产aⅴ爽av久久久久久久 | 成人做爰999| 久久久久国产一区二区三区四区 | 国产精品海角社区在线观看 | a级毛片国产 | 成人九区 | h视频在线观看免费 | www.99热.com| 一区在线观看 | 国产高清久久久 | 小川阿佐美pgd-606在线 | 亚洲精品免费视频 | 7777在线视频免费播放 | 色先锋影音 | 日韩欧美亚洲综合 | 欧美激情在线播放 | 国产精品不卡 | 自拍第一页| 国产精品久久久久久影院8一贰佰 | 日本不卡一区二区三区 | 欧美激情欧美激情在线五月 | 伊人天堂网 | 国产精品久久久久久久久图文区 | 成人一级视频在线观看 | 国产精品69毛片高清亚洲 | 婷婷国产一区二区三区 |