|
|
Title | Set a control's Region to shape the control in VB .NET |
Keywords | region, window region, shape, shaped control |
Categories | VB.NET, Graphics |
|
|
Set the control's Region propery to a System.Drawing.Region object. Creating the Region is the only trick.
This example makes a polygonal region. It first creates an array of Points to define a star-shaped polygon. It creates an array of Bytes that indicates that each point is part of a line, not a Bezier curve or something else. It uses the Points and Bytes to define a GraphicsPath object and uses the GraphicsPath to define the Region. Finally, it sets the Button1 control's Region property to this Region.
|
|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal _
e As System.EventArgs) Handles MyBase.Load
' Create an array of points defining the region.
Dim points(9) As Point
Dim point_types(9) As Byte
Dim cx As Double = Button1.Width / 2
Dim cy As Double = Button1.Height / 2
Dim theta As Double = -PI / 2
Dim dtheta As Double = 2 * PI / 10
For i As Integer = 0 To 4
points(2 * i) = New Point( _
CInt(cx + Cos(theta) * cx * 0.9), _
CInt(cy + Sin(theta) * cy * 0.9))
theta += dtheta
points(2 * i + 1) = New Point( _
CInt(cx + Cos(theta) * cx * 0.5), _
CInt(cy + Sin(theta) * cy * 0.5))
theta += dtheta
Next i
' Indicate all points are for lines (not Bezier, etc.).
For i As Integer = 0 To 9
point_types(i) = CByte(PathPointType.Line)
Next i
' Create a Path using the points.
Dim btn_path As New GraphicsPath(points, point_types)
' Make the region.
Dim btn_region As New Region(btn_path)
' Set the button's Region.
Button1.Region = btn_region
End Sub
|
|
Note that the Region property is inherited from the Control class so IntelliSense doesn't list it. You need to type it yourself.
|
|
|
|
|
|