2016-11-13 75 views
0

我想构建一个六角形按钮。这是我得到的代码。在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) 

不幸的是,它看起来像顶点的六边形。我想要的是顶部有水平线的六角形。

谢谢!

+0

好像它需要7点与最后一个点等于第一 – Slai

+0

没事的时候我这样做:( – ABCDE

+0

是否移动最后一点,首先和重新编号解决? – MrGadget

回答

1

您可以交换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) 

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