Public Class Form1 Private img As New Bitmap(500, 500) '描画用ビットマップ Private g As Graphics 'グラフィック変数 Private R As Double = 200 '半径 Private X0 As Double = 250, Y0 As Double = 250 '中心座標 Private N As Integer '実行中角数 Private dTH As Double = Math.PI / 6 '角数の増分値 Private TH As Double '回転角度 Private PC(8) As Pen '描画用Pen Private PWhite As Pen 'White Pen Private BRed As Brush 'Red Brush 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)) PWhite = New Pen(Color.White) BRed = New SolidBrush(Color.Red) End Sub Private Sub drawDLine(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, P As Pen) Dim IX1 As Integer = X1 + 0.5, IY1 As Integer = Y1 + 0.5 Dim IX2 As Integer = X2 + 0.5, IY2 As Integer = Y2 + 0.5 g.DrawLine(P, IX1, IY1, IX2, IY2) End Sub Private Sub fillDCircle(X0 As Double, Y0 As Double, R As Double, B As Brush) Dim IX0 As Integer = X0 + 0.5, IY0 As Integer = Y0 + 0.5 Dim IR As Integer = R + 0.5, IR2 As Integer = 2 * R + 0.5 g.FillEllipse(B, IX0 - IR, IY0 - IR, IR2, IR2) End Sub Private Sub DrawPic() Dim X1 As Double, X2 As Double, Y1 As Double, Y2 As Double Dim i As Integer g = Graphics.FromImage(img) : g.Clear(Color.Black) '描画クリア Dim DY As Double, DX As Double, XR2 As Double, YR2 As Double X2 = X0 + R * Math.Cos(TH) : XR2 = X2 Y2 = Y0 - R * Math.Sin(TH) : YR2 = Y2 DY = 4 * Math.Sin(TH) : DX = 4 * Math.Cos(TH) i = 0 : Y1 = Y0 For X1 = X0 To X0 + R Step 4 drawDLine(X1, Y1, X2, Y2, PC(i Mod 9)) X2 = X2 - DX : Y2 = Y2 + DY : i = i + 1 Next drawDLine(X0, Y0, XR2, YR2, PWhite) drawDLine(X0, Y0, X0 + R, Y0, PWhite) fillDCircle(XR2, YR2, 5, BRed) PictureBox1.Image = img : g.Dispose() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click TH = 0 Timer1.Enabled = True End Sub Private Sub singleDraw() DrawPic() If TH >= 2 * Math.PI * 0.99999 Then TH = 0 TH = TH + dTH End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load TH = 0 initData() End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick singleDraw() 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 singleDraw() End Sub End Class