Рисование септагона в vb.net

#vb.net #winforms #polygon

#vb.net #winforms #многоугольник

Вопрос:

Есть ли у кого-нибудь какой-нибудь код, который может нарисовать равносторонний септагон в vb.net ?

Все стороны и углы должны быть равны.

Спасибо

Комментарии:

1. Как рисовать? Используете ли вы WPF, WinForms, Silverlight или какой-либо bitmap API?

Ответ №1:

Нет, но если вы представите циферблат с 60 минутами, то каждые 8,5 минут будут обозначать одну точку вашей 7-сторонней фигуры.

Ответ №2:

Вот функция для рисования правильного многоугольника с заданным количеством сторон:

 Sub poly(ByVal center As PointF, ByVal radius As Double, ByVal nSides As Integer, ByVal g As Graphics)

Dim pts(nSides) As PointF
Dim Angle As Double = Math.PI * 2 / nSides
Dim i As Integer
Dim a As Double

a = Math.PI / 2 ' first point on top
For i = 0 To UBound(pts)
  pts(i) = center   New Point(radius * Math.Cos(a), -radius * Math.Sin(a))
  a = a   Angle
  Next i

g.DrawPolygon(Pens.DarkGreen, pts)
End Sub
  

Чтобы вызвать его, настройте графический объект там, где вы хотите, чтобы он был нарисован. Например, чтобы нарисовать его в pictureBox1, вы могли бы назвать его следующим образом:

 Dim g As Graphics

PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height) ' new bitmap
g = Graphics.FromImage(PictureBox1.Image) ' assign graphics object to g
g.FillRectangle(Brushes.White, 0, 0, PictureBox1.Width, PictureBox1.Height) ' white background
' draw 7-sided polygon in the center of the picturebox
poly(New PointF(PictureBox1.Width / 2, PictureBox1.Height / 2), PictureBox1.Height / 3, 7, g)