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

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

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

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

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

以下是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 類(應用程序使用路徑來繪制形狀的輪廓、填充形狀內部和創建剪輯區域),來繪制圖形,然后通過VB.NET特殊形狀窗體的Me.Region來設置窗口的可見區域。

以下是VB.NET的代碼:

  1. '聲明一個布爾型變量,判斷窗體是否正常區域  
  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. '構造一個GraphicsPath對象實例  
  6. Dim Graphics AsNew System.Drawing.Drawing2D.GraphicsPath()  
  7. Dim intHeight AsInteger = Me.Size.Height  
  8. Dim intWidth AsInteger = Me.Size.Width  
  9. '定義內矩形的左上角坐標  
  10. Dim RectTop AsInteger = 100 
  11. '在窗體上繪制一個大橢圓,左上角的坐標取為(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. '設置窗口的可見區域  
  17. Me.Region = New Region(Graphics)  
  18. Else  
  19. Me.Region = Nothing 
  20. EndIf  
  21. IsNormalRegion = Not IsNormalRegion  
  22. EndSub 
責任編輯:佚名 來源: 博客
相關推薦

2010-01-11 15:12:30

VB.NET特殊窗體

2010-01-11 15:31:04

VB.NET拖動窗體

2009-11-03 17:31:01

VB.NET窗體

2009-04-30 13:24:45

VB.NET 2008窗體應用實例

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-13 09:31:39

VB.NET窗體打印

2009-10-14 13:56:05

VB.NET數據窗體

2009-10-16 09:35:24

VB.NET制作透明窗

2010-01-20 17:54:13

VB.NET特殊字符

2010-01-13 15:52:59

VB.NET浮動窗體

2009-11-10 15:07:11

VB.NET窗體

2009-10-26 17:53:50

VB.NET新窗體

2009-10-29 14:04:48

VB.NET Deri

2009-10-30 13:31:06

VB.NET名空間

2009-11-02 10:42:04

VB.NET EXCE

2009-10-28 13:23:52

VB.NET可選參數

2009-10-14 14:50:16

VB6.0VB.NET

2010-01-19 18:24:29

VB.NET調用Win
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区四区不卡 | 伊人在线视频 | 亚洲精品在 | 久久99国产精一区二区三区 | 国产一区二区三区视频 | 在线视频一区二区三区 | 欧美中文字幕在线 | 久久久久免费精品国产 | 国产日韩免费视频 | 欧美精品在欧美一区二区 | 日韩欧美在线视频 | 国产高清精品在线 | 日韩精品久久一区二区三区 | 国产乱码一区 | 中文字幕在线一区 | 欧美一级在线观看 | 中文字幕免费视频 | 亚洲精品大片 | 免费在线视频一区二区 | 国产日韩精品视频 | 亚洲中字在线 | 一区二区精品电影 | 欧美日韩中 | 一级片在线观看 | 四虎国产| 另类专区亚洲 | 午夜成人在线视频 | 中文字幕日韩欧美一区二区三区 | 亚州影院 | 欧美日韩视频在线播放 | 精品国产乱码久久久久久影片 | 超碰在线免费 | 久久成人高清视频 | 97久久久| 久久伊人青青草 | 亚洲 中文 欧美 日韩 在线观看 | 久久综合婷婷 | 国产.com | 一区在线播放 | 国产一区h | 麻豆久久久久久 |