Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint DrawPolygon(7, e.Graphics) End Sub Private Sub DrawPolygon(index As Integer, g As Graphics) Const radius As Integer = 200 '外接円の半径 '中心角(360度)をn等分したときの1角あたりの角度(単位はラジアン) Dim degree As Double = (Math.PI * 2) / index Dim points As New List(Of Point) For i As Integer = 0 To index - 1 '点0から点iの角度(角 点1-O-点iの角度)に180度加えたもの。単位はラジアン。 '180度 = Math.PIラジアン '180度加えなくても良いのですが、学校数学とy軸の方向が逆になっているので、180度加えることで、 '学校数学でなじんだような配置になります。 Dim thisDegree As Double = degree * i + Math.PI '点iのx座標 Dim x As Double = Math.Sin(thisDegree) * radius '点iのy座標 Dim y As Double = Math.Cos(thisDegree) * radius 'この点を記憶しておく points.Add(New Point(CInt(x), CInt(y))) Next '第4象限まで見えるように平行移動させる。(既定では第1象限しか表示されていない。) g.TranslateTransform(radius, radius) '背景色黒 g.Clear(Color.Black) '座標を配列化して間を線で結ぶ。 g.DrawPolygon(Pens.Blue, points.ToArray) End Sub