Public Class Form1 Private Const NMAX = 30 '最大角数(30角形) Private Const NMIN = 20 '最小角数(20角形) Private img As New Bitmap(300, 300) '描画用ビットマップ Private X(NMAX) As Integer, Y(NMAX) As Integer '頂点座標 Private R As Double = 100 '半径 Private X0 As Double = 150, Y0 As Double = 150 '中心座標 Private N As Integer '実行中角数 Private dN As Integer = 1 '角数の増分値 Private PC(8) As Pen '描画用Pen Private Sub initData() PC(0) = New Pen(Color.FromArgb(&HFF, &H0, &H0)) PC(1) = New Pen(Color.FromArgb(&HFF, &H77, &H0)) PC(2) = New Pen(Color.FromArgb(&H77, &H77, &H0)) PC(3) = New Pen(Color.FromArgb(&H0, &H90, &H0)) PC(4) = New Pen(Color.FromArgb(&H0, &H77, &H0)) PC(5) = New Pen(Color.FromArgb(&H0, &H77, &H77)) PC(6) = New Pen(Color.FromArgb(&H0, &H0, &HFF)) PC(7) = New Pen(Color.FromArgb(&H77, &H0, &HFF)) PC(8) = New Pen(Color.FromArgb(&HFF, &H0, &HFF)) End Sub Private Sub drawDiamond() Dim g As Graphics = Graphics.FromImage(img) : g.Clear(Color.Black) '描画クリア Dim dTH As Double = 2 * Math.PI / N, TH As Double = 0 For i = 0 To N X(i) = X0 + R * Math.Cos(TH) + 0.5 Y(i) = Y0 + R * Math.Sin(TH) + 0.5 TH = TH + dTH Next For i = 1 To N For j = 0 To i - 1 'g.DrawLine(PC((i + j) Mod 9), X(j), Y(j), X(i), Y(i)) g.DrawLine(PC(j Mod 9), X(j), Y(j), X(i), Y(i)) 'g.DrawLine(PC(i Mod 9), X(j), Y(j), X(i), Y(i)) Next Next PictureBox1.Image = img : g.Dispose() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click N = NMIN : dN = 1 Timer1.Enabled = True End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load initData() : N = NMIN End Sub Private Sub singleExe() drawDiamond() Label1.Text = "分割数 " & N If N >= NMAX Then dN = -1 If N <= NMIN Then dN = 1 N = N + dN End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick singleExe() End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Timer1.Enabled = False End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click singleExe() End Sub End Class