国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

從頭創建 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 方法繪制出該圓,函數結束。記住,該函數需要調用三次以繪制三個不同的圓。

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        麻豆精品视频在线观看免费| 奇米亚洲午夜久久精品| 一区二区三区四区乱视频| 国产a区久久久| 亚洲日本va在线观看| 国产麻豆视频精品| 国产精品久久久久影院| 91精品办公室少妇高潮对白| 香蕉成人啪国产精品视频综合网| 91精品福利在线一区二区三区 | 91福利资源站| 丝袜美腿亚洲综合| 久久精品一区蜜桃臀影院| 99久久夜色精品国产网站| 亚洲精选一二三| 日韩一区二区精品葵司在线| 国产成人一区二区精品非洲| 亚洲蜜臀av乱码久久精品蜜桃| 欧美老年两性高潮| 丰满少妇在线播放bd日韩电影| 一区二区三区欧美亚洲| 精品免费日韩av| 在线观看亚洲成人| 国产在线看一区| 亚洲韩国精品一区| 国产日韩欧美综合一区| 制服丝袜中文字幕一区| 色网综合在线观看| 国产精品羞羞答答xxdd| 日韩va欧美va亚洲va久久| 国产精品动漫网站| 久久久国产一区二区三区四区小说| 欧洲精品视频在线观看| 不卡一卡二卡三乱码免费网站| 日韩av在线发布| 亚洲国产成人av好男人在线观看| 久久青草国产手机看片福利盒子| 欧美日韩一区二区三区免费看| 丁香激情综合国产| 另类小说色综合网站| 亚洲国产视频在线| 亚洲日本丝袜连裤袜办公室| 久久精品视频在线免费观看| 在线综合视频播放| 欧美丰满高潮xxxx喷水动漫| 欧美亚洲国产一区二区三区va| 国产一区二区三区四区五区入口| 免费的成人av| 久久黄色级2电影| 日韩电影在线一区| 日产欧产美韩系列久久99| 亚洲一区二区三区在线播放| 日韩理论片中文av| 一区二区三区在线不卡| 中文字幕一区二区三区四区不卡| 国产网站一区二区| 国产精品网站在线| 国产精品丝袜在线| 国产精品视频看| 国产精品久久久久久亚洲毛片| 国产日韩欧美电影| 久久天天做天天爱综合色| 久久综合五月天婷婷伊人| 精品国产露脸精彩对白| 久久先锋影音av| 久久久一区二区| 国产喷白浆一区二区三区| 日本一区二区久久| 亚洲视频在线一区| 亚洲国产精品一区二区尤物区| 亚洲制服丝袜av| 日韩av网站在线观看| 激情国产一区二区| 成人动漫精品一区二区| 91成人在线精品| 欧美一级片在线观看| 国产亚洲欧美色| 亚洲欧洲无码一区二区三区| 一区二区三区在线观看欧美| 亚洲国产成人高清精品| 裸体一区二区三区| 成人av电影在线播放| 欧美无人高清视频在线观看| 欧美一区二区三区在线观看 | 99精品欧美一区二区三区综合在线| 91在线码无精品| 欧美福利一区二区| 久久精品亚洲一区二区三区浴池| 国产精品美女一区二区在线观看| 亚洲制服丝袜在线| 国产精品一二一区| 欧美性猛交xxxxxxxx| 欧美不卡一区二区| 亚洲精品网站在线观看| 青青草国产成人99久久| 成人高清在线视频| 日韩欧美亚洲另类制服综合在线 | 亚洲sss视频在线视频| 亚洲天堂精品在线观看| 美国三级日本三级久久99| 91网上在线视频| 欧美大片国产精品| 午夜欧美电影在线观看| 99免费精品在线| 久久免费电影网| 偷拍与自拍一区| 91无套直看片红桃| 日本一区二区三区在线观看| 亚洲18影院在线观看| 99v久久综合狠狠综合久久| 久久只精品国产| 日韩国产精品久久久| 色婷婷综合久久久| 中文字幕欧美日韩一区| 国产在线精品一区二区夜色 | 国产成人8x视频一区二区| 日韩手机在线导航| 亚洲午夜精品17c| 91视频免费观看| 久久久久久一二三区| 美女视频网站久久| 91精品黄色片免费大全| 亚洲成人在线网站| 欧美伊人精品成人久久综合97 | 中文字幕一区二区三区乱码在线 | 国产69精品一区二区亚洲孕妇| 91麻豆精品国产91久久久久久 | www..com久久爱| 国产亚洲女人久久久久毛片| 黄色小说综合网站| 日韩欧美国产综合在线一区二区三区| 亚洲一区二区三区小说| 日本高清视频一区二区| 一区二区三区国产| 色乱码一区二区三区88| 日本一区二区成人| 成人18视频在线播放| 亚洲免费在线观看视频| 欧美主播一区二区三区| 亚洲国产欧美日韩另类综合| 欧美日韩亚州综合| 麻豆精品国产传媒mv男同| 欧美变态tickling挠脚心| 蜜臂av日日欢夜夜爽一区| 日韩精品一区二区三区视频| 久久国产精品99久久久久久老狼| 日韩免费观看高清完整版在线观看| 久久精品国产精品亚洲综合| 久久综合网色—综合色88| 国产91在线观看丝袜| 最新国产成人在线观看| 欧美日韩视频在线第一区 | 男人操女人的视频在线观看欧美| 91精品国产一区二区三区| 精品一区二区在线观看| 国产欧美日韩另类视频免费观看| 国产福利一区二区三区在线视频| 国产精品天干天干在观线| 色欧美日韩亚洲| 精品在线你懂的| 国产精品热久久久久夜色精品三区| 91丝袜高跟美女视频| 奇米影视一区二区三区| 欧美经典一区二区| 欧美性色综合网| 国产成人免费视频一区| 亚洲v精品v日韩v欧美v专区| 久久久久久**毛片大全| 在线亚洲精品福利网址导航| 久久精品国产精品亚洲综合| 亚洲日本丝袜连裤袜办公室| 日韩视频一区二区在线观看| aaa欧美日韩| 韩国毛片一区二区三区| 亚洲尤物在线视频观看| 国产拍揄自揄精品视频麻豆| 色八戒一区二区三区| 国产二区国产一区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 精品乱人伦小说| 欧美性大战久久久| 波多野洁衣一区| 国内精品免费在线观看| 亚洲成人动漫一区| 亚洲精品你懂的| 日本一区二区三区在线不卡| 日韩欧美aaaaaa| 欧美日韩在线播放一区| 99久久精品国产一区二区三区 | 亚洲综合色在线| 国产精品国产自产拍在线| 久久综合色之久久综合| 欧美一区二区三区的| 欧亚洲嫩模精品一区三区| 懂色av一区二区在线播放| 极品少妇xxxx偷拍精品少妇| 亚洲18女电影在线观看| 一区二区三区欧美日韩| 亚洲欧美另类在线| 亚洲人精品午夜|