ABCDE
ABCDE

Reputation: 131

Drawing hexagon in vb.net

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

Answers (1)

Nico Schertler
Nico Schertler

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

Related Questions