Reputation: 131
I want to build a hexagon-shaped button. Here's the code I've got.
Dim p(5) As Point
Dim v As Integer = CInt(Me.Width / 2 * Math.Sin(30 * Math.PI / 180))
p(0) = New Point(Me.Width \ 2, 0)
p(1) = New Point(Me.Width, v)
p(2) = New Point(Me.Width, Me.Height - v)
p(3) = New Point(Me.Width \ 2, Me.Height)
p(4) = New Point(0, Me.Height - v)
p(5) = New Point(0, v)
Unfortunately, it appears hexagon with the point at the top. What I want is a hexagon with horizontal line at the top.
Thanks!
Upvotes: 1
Views: 1165
Reputation: 32627
You can just swap x and y coordinates, which effectively mirrors the shape at the system's diagonal. And adapt the scaling to Width
and Height
accordingly:
Dim v As Integer = CInt(Me.Height/ 2 * Math.Sin(30 * Math.PI / 180))
p(0) = New Point(0, Me.Height\ 2)
p(1) = New Point(v, Me.Height)
p(2) = New Point(Me.Width- v, Me.Height)
p(3) = New Point(Me.Width, Me.Height\ 2)
p(4) = New Point(Me.Width - v, 0)
p(5) = New Point(v, 0)
Be aware that this reverses the point order. If your processing method relies on that, you may need to re-order the points.
Upvotes: 2