在 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 坐标,这样可以有效地反映系统对角线上的形状。并相应地将缩放调整为 Width
和 Height
:
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)
请注意,这会颠倒点顺序。如果您的处理方法依赖于此,您可能需要重新排序这些点。
我想做一个六边形的按钮。这是我得到的代码。
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 坐标,这样可以有效地反映系统对角线上的形状。并相应地将缩放调整为 Width
和 Height
:
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)
请注意,这会颠倒点顺序。如果您的处理方法依赖于此,您可能需要重新排序这些点。