2016-11-13 2 views
0

Je veux construire un bouton en forme de hexagone. Voici le code que j'ai.Dessiner hexagone dans 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) 

Malheureusement, il semble hexagone avec le point en haut. Ce que je veux, c'est un hexagone avec une ligne horizontale en haut.

Merci!

+0

semble comme il a besoin de 7 points avec le dernier point égal au premier – Slai

+0

rien ne se passe quand je l'ai fait :( – ABCDE

+0

que déplacer le dernier point d'abord et renumérotation corriger? – MrGadget

Répondre

1

Vous pouvez simplement échanger les coordonnées x et y, ce qui reflète efficacement la forme à la diagonale du système. Et adapter la mise à l'échelle à Width et Height en conséquence:

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) 

Soyez conscient que cela renverse l'ordre des points. Si votre méthode de traitement dépend de cela, vous devrez peut-être réorganiser les points.