在 vb.net 中绘制六边形

Drawing hexagon in vb.net

我想做一个六边形的按钮。这是我得到的代码。

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)

不幸的是,它显示为六边形,顶点位于顶部。我想要的是一个顶部有水平线的六边形。

谢谢!

您可以只交换 x 和 y 坐标,这样可以有效地反映系统对角线上的形状。并相应地将缩放调整为 WidthHeight

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)

请注意,这会颠倒点顺序。如果您的处理方法依赖于此,您可能需要重新排序这些点。