在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

從頭創建 Visual Basic .NET 控件 (5)

從頭創建 Visual Basic .NET 控件 (5)

更新時間:2020-02-09 文章作者:未知 信息來源:網絡 閱讀次數:

第 4 步:繪制控件的外觀
要使控件具有一個可視的外觀,我們需要在 Paint 事件中放置邏輯。然后,每次控件需要刷新其可視外觀時,就會運行該邏輯。

Windows 窗體中的 Paint 邏輯使用 .NET 中 GDI+ 部分中的類。這些類基本上包括了 Windows API 圖形功能。由于適合 .NET,所以比 API 更易于使用。但是,有關它們的工作原理,需要理解以下幾點。

在 Windows API 中,圖形操作需要一個窗口句柄,有時稱為 hWnd。在 GDI+ 中,它由 Graphics 對象取代,該對象不僅代表了繪圖區域,還提供在該區域執行的操作(方法)。

例如,Graphics 對象具有以下方法,可用來繪制各種屏幕元素:

DrawCurve
DrawEllipse
DrawLine
DrawPolygon
DrawRectangle
DrawString
FillEllipse
FillPolygon
這些都是很容易理解的,只是可用方法的示例。一些更復雜的方法還允許旋轉對象。我們將使用 DrawRectangle 方法繪制邊框,使用 FillEllipse 方法繪制彩色的圓。

大多數繪圖方法都要求使用 Pen 或 Brush 對象。Pen 對象用于繪制直線并確定直線的顏色和粗細。Brush 對象用于填充區域、確定填充區域所使用的顏色,以及一些特殊效果(例如,用位圖填充區域)。我們將使用特殊的 Brush 效果使當前沒有亮起的燈的顏色變暗。

下面是處理控件的 Paint 事件的代碼:

Protected Overrides Sub OnPaint(ByVal pe As _
System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(pe)

Dim grfGraphics As System.Drawing.Graphics
grfGraphics = pe.Graphics

' 首先繪制三個代表燈的圓。
' 一個亮起,其余兩個熄滅。
DrawLight(TrafficLightStatus.statusGreen, grfGraphics)
DrawLight(TrafficLightStatus.statusYellow, grfGraphics)
DrawLight(TrafficLightStatus.statusRed, grfGraphics)

' 現在繪制紅綠燈周圍的輪廓
' 用畫筆繪制輪廓,將它涂成黑色。
Dim penDrawingPen As New _
System.Drawing.Pen(System.Drawing.Color.Black, msngBorderWidth)

' 在控件上繪制紅綠燈的輪廓。
' 首先定義要繪制的矩形。
Dim rectBorder As System.Drawing.Rectangle

rectBorder.X = 1
rectBorder.Y = 1
rectBorder.Height = Me.Height - 2
rectBorder.Width = Me.Width - 2
grfGraphics.DrawRectangle(penDrawingPen, rectBorder)

' 釋放圖形對象
penDrawingPen.Dispose()
grfGraphics.Dispose()

End Sub

首先使用基類繪制,它通常使用控件的背景顏色繪制背景。然后,從事件參數中獲取控件的 Graphics 對象。

接下來,用一個函數畫出三個圓。有關該函數的內容稍后介紹。請注意,我們必須向該函數傳遞一個 Graphics 對象的引用,同時還要指示要畫的圓(紅、黃、綠)。

然后是繪制輪廓的代碼。聲明一個具有適當位置和大小的矩形,然后傳遞給 Graphics 對象的 DrawRectangle 方法。

最后,圖形對象激活其 Dispose 方法。使用 GDI+ 時,最好在完成圖形對象后立即釋放它們。這有助于清除操作系統繪圖時所用的資源。如果要在 Windows® 98 或 Windows Me 中使用控件,管理圖形資源就更加重要,因為這些操作系統處理這種資源的能力較差。

下面是繪制圓的函數:

Private Sub DrawLight(ByVal LightToDraw As TrafficLightStatus, _
ByVal grfGraphics As Graphics)

Dim nCircleX As Integer
Dim nCircleY As Integer
Dim nCircleDiameter As Integer
Dim nCircleColor As Color

' 找到所有圓的 X 坐標和直徑
nCircleX = CInt(Me.Size.Width * 0.02)
nCircleDiameter = CInt(Me.Size.Width * 0.96)
Select Case LightToDraw
Case TrafficLightStatus.statusRed
If LightToDraw = Me.Status Then
nCircleColor = Color.OrangeRed
Else
nCircleColor = Color.Maroon
End If
nCircleY = CInt(Me.Size.Height * 0.01)
Case TrafficLightStatus.statusYellow
If LightToDraw = Me.Status Then
nCircleColor = Color.Yellow
Else
nCircleColor = Color.Tan
End If
nCircleY = CInt(Me.Size.Height * 0.34)
Case TrafficLightStatus.statusGreen
If LightToDraw = Me.Status Then
nCircleColor = Color.LimeGreen
Else
nCircleColor = Color.ForestGreen
End If
nCircleY = CInt(Me.Size.Height * 0.67)

End Select
Dim bshBrush As System.Drawing.Brush
If LightToDraw = Me.Status Then

bshBrush = New SolidBrush(nCircleColor)
Else
bshBrush = New SolidBrush(Color.FromArgb(60, nCircleColor))
End If

' 繪制代表紅綠燈的圓
grfGraphics.FillEllipse(bshBrush, nCircleX, nCircleY, nCircleDiameter, nCircleDiameter)

' 釋放筆刷
bshBrush.Dispose()

End Sub

這是整個控件中唯一的一個復雜圖形。在 GDI+ 中,在要繪制橢圓的矩形中指定左上角的 X 坐標和 Y 坐標,然后指定矩形的高度和寬度即可繪制一個橢圓。我們分別將 X 坐標和 Y 坐標稱為 nCircleX 和 nCircleY。因為我們要繪制一個圓,因此矩形的高度等于寬度,用變量 nCircleDiameter 來控制該值。

將 nCircleX 設置為剛好放到控件內(控件的寬度乘以 0.02)。nCircleY 取決于要繪制哪個燈,可以設置成靠近控件的頂部(紅燈)、大約向下三分之一(黃燈)或大約向下三分之二(綠燈)。直徑 nCircleDiameter 設置為等于控件寬度的 96%。

要繪制實心橢圓,還需完成一件事,即確定要使用的顏色。顏色取決于正在繪制哪個燈以及正在繪制的燈是否亮起。亮起的燈的顏色要比熄滅的燈的顏色亮。

創建繪圖要使用的筆刷時需要使用這些顏色。如果正在繪制的燈是亮起的,即使用該顏色。如果繪制的燈是熄滅的,則要使用不同的方法實例化筆刷。下面是熄滅的燈所使用筆刷的代碼行:

bshBrush = New SolidBrush(Color.FromArgb(60, nCircleColor))

這并不是 .NET 中較好的方法名,但 FromArgB 方法的作用是創建筆刷,并通過將筆刷與背景顏色相結合來淡化顏色。第一個參數使用的數字介于 0 至 255 之間,數字越小,背景顏色滲透越深。我們使用的值為 60,它將大大降低處于熄滅狀態的燈的顏色。您可以嘗試對該參數使用不同的值(或將它設置成可設置屬性),以獲得不同的效果。

最后,Graphics 對象的 DrawEllipse 方法繪制出該圓,函數結束。記住,該函數需要調用三次以繪制三個不同的圓。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 一区二区xxx| 国产精品久久中文字幕| 欧美中日韩在线| 欧美激情精品久久久久久小说| 性鲍视频在线观看| 久久久999免费视频| 一级黄色片在线免费观看| 日本午夜激情视频| 国产911在线观看| 欧美在线观看视频网站| 国产深夜男女无套内射| 免费久久久久久| 欧洲精品一区二区三区久久| 日韩精品视频一区二区在线观看| 国产亚洲精品久久久久久久| 一级黄色大片儿| 中文字幕免费高清在线| 亚洲黄色av网址| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 一本二本三本亚洲码 | 黄黄视频在线观看| 国产欧美精品一二三| 日本免费色视频| 无码人妻精品一区二区三区66| 日韩精品―中文字幕| 蜜臀精品一区二区| 中文字幕在线中文| 丁香婷婷综合激情| 久久av高潮av| 亚洲 高清 成人 动漫| 国产自产在线视频| 国产欧美在线一区| 少妇高清精品毛片在线视频| 成人一级片网站| 日本黄网站免费| 无码中文字幕色专区| 欧美极品欧美精品欧美| jizzjizzxxxx| 88av.com| 色哟哟免费网站| 一女被多男玩喷潮视频| 国产精品无码一本二本三本色| 日本老熟妇毛茸茸| 国产又粗又长又爽又黄的视频| 日本一道在线观看| 国产av麻豆mag剧集| www.xxx亚洲| 最近中文字幕免费mv| 免费看黄在线看| 福利在线一区二区| 无码人妻丰满熟妇区毛片18| 中文字幕国内自拍| 永久免费看av| 国产天堂在线播放| 日本福利视频在线观看| 虎白女粉嫩尤物福利视频| 免费观看黄色大片| 毛片一区二区三区四区| 1314成人网| 国内外免费激情视频| 欧美大尺度做爰床戏| 日韩视频 中文字幕| 免费观看成人在线视频| 手机在线视频你懂的| 免费 成 人 黄 色| 欧美视频在线第一页| 国产乱女淫av麻豆国产| 黄色一级片播放| 无码人妻精品一区二区蜜桃百度| 蜜桃免费在线视频| 国产日韩一区二区在线| 99re6这里有精品热视频| 中文字幕av不卡在线| 黄色国产精品视频| 日韩一级片免费视频| 中文字幕免费高| 亚洲一二区在线观看| 日韩av一卡二卡三卡| 9久久婷婷国产综合精品性色| 亚洲天堂第一区| 午夜免费一级片| 波多野结衣作品集| 妞干网在线免费视频| 亚洲不卡中文字幕无码| 91动漫在线看| 4444在线观看| 男人的天堂视频在线| 一区二区三区一级片| 亚洲精品视频三区| 亚洲天堂av免费在线观看| 在线播放黄色av| 国产传媒免费观看| 国产永久免费网站| 91网址在线观看精品| 国产盗摄视频在线观看| 亚洲黄色a v| 九九热免费精品视频| 国产一区二区片| aaaaaa亚洲| 亚洲精品免费一区亚洲精品免费精品一区| www.欧美日本| 天天干天天干天天干天天干天天干| 亚洲高清在线免费观看| 欧美日韩成人免费视频| 免费男同深夜夜行网站| av免费一区二区| 欧美一区二区视频在线播放| 青青草成人免费在线视频| 国产精品少妇在线视频| 在线一区二区不卡| 可以在线看黄的网站| av免费看网址| 一女二男3p波多野结衣| 最新av在线免费观看| 青青青国产在线观看| 国产原创popny丨九色| 日本一区二区黄色| 黄色aaaaaa| 日韩亚洲在线视频| 2025韩国大尺度电影| 日韩欧美视频网站| 一级一片免费播放| 国产又大又硬又粗| 最新国产黄色网址| 亚洲熟妇国产熟妇肥婆| 色香蕉在线观看| 一区二区在线播放视频| cao在线观看| 天堂在线一区二区三区| 黄色大片在线免费看| 裸体大乳女做爰69| 激情综合网俺也去| 日韩av高清在线看片| 超碰成人在线免费观看| 无遮挡又爽又刺激的视频| 黄色片免费在线观看视频| 伊人色在线观看| 中文字幕在线观看第三页| 999久久欧美人妻一区二区| 午夜在线观看av| 91精品国产吴梦梦| 国产福利片一区二区| 黄色小视频免费网站| 无码人妻h动漫| www.中文字幕在线| 97中文字幕在线| 久久久久久久香蕉| 中国女人做爰视频| 超碰成人在线免费观看| 日韩在线一区视频| 亚洲最大天堂网| 亚洲36d大奶网| caoporm在线视频| 国内精品国产三级国产aⅴ久| 奇米影音第四色| 91九色丨porny丨国产jk| 国产精品88久久久久久妇女 | 少妇人妻互换不带套| 大肉大捧一进一出好爽动态图| 欧美狂野激情性xxxx在线观| 国产91porn| 欧美在线观看视频免费| 日韩视频在线视频| 米仓穗香在线观看| 免费观看中文字幕| 免费观看亚洲视频| 日本wwww视频| 九热视频在线观看| 91香蕉视频免费看| 国产色一区二区三区| 黄页网站在线观看视频| 黄色网页免费在线观看| 久久久久久蜜桃一区二区| 999一区二区三区| 国产原创精品在线| ww国产内射精品后入国产| 日韩欧美理论片| 日本人视频jizz页码69| 黄色成人在线看| 黑人巨大国产9丨视频| 毛片一区二区三区四区| 精品无码国产一区二区三区av| 亚洲77777| 国产精品第12页| 自拍日韩亚洲一区在线| xxxxxx在线观看| 国产精品无码乱伦| 91香蕉国产线在线观看| 看欧美ab黄色大片视频免费| 黄网站欧美内射| 欧美精品久久久久久久久久久| 999在线观看| 在线看的黄色网址| 一区二区三区韩国| 日日躁夜夜躁aaaabbbb| 日韩免费视频播放| 国产av麻豆mag剧集| 中文字幕无码精品亚洲资源网久久| 国产精品jizz在线观看老狼| 九九热精品国产|