Public Class Form1 Dim img As New Bitmap(400, 500) Private Sub Form1_MouseClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseClick End Sub Private Sub shadeOff() Dim C0 As Color, CU As Color, CD As Color Dim CL As Color, CR As Color Dim R As Integer, G As Integer, B As Integer With img For i = 1 To 398 For j = 1 To 498 CU = .GetPixel(i, j - 1) : CD = .GetPixel(i, j + 1) CL = .GetPixel(i - 1, j) : CR = .GetPixel(i + 1, j) C0 = .GetPixel(i, j) R = (3 * C0.R() + CU.R() + CD.R() + CL.R() + CR.R) \ 7 G = (3 * C0.G() + CU.G() + CD.G() + CL.G() + CR.G) \ 7 B = (3 * C0.B() + CU.B() + CD.B() + CL.B() + CR.B) \ 7 .SetPixel(i, j, Color.FromArgb(R, G, B)) Next Next End With End Sub Private Function setColor(i As Integer) As Color Dim ii As Integer If i < 40 Then ii = i * 255 \ 40 : setColor = Color.FromArgb(50, 255 - ii, 0, 255) ElseIf i < 80 Then ii = (i - 40) * 255 \ 40 : setColor = Color.FromArgb(50, ii, ii, 255 - ii) ElseIf i < 120 Then ii = (i - 80) * 255 \ 40 : setColor = Color.FromArgb(50, 255, 255 - ii, 0) Else setColor = Color.FromArgb(50, 255, 255, 0) End If End Function Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim g As Graphics = Graphics.FromImage(img) : g.Clear(Color.Black) '描画クリア Dim rad As Double = Math.PI / 60 Dim a As Double = 220, b As Double = 200 Dim r As Integer = 100 ', ee As Double = rad Dim th As Double, d As Double, x As Double, y As Double Dim W As Integer, L As Integer, T As Integer Dim p As Pen = New Pen(Color.Black) th = 0 For i = 0 To 120 d = Math.Abs(r * Math.Sin(th)) x = r * Math.Cos(th) + a - d - 20 y = r * Math.Sin(th) + a - d W = 2 * d + 0.5 : L = x + 0.5 : T = y + 0.5 g.FillEllipse(New SolidBrush(setColor(i)), L, T, W, W) th = th + rad Next th = 0 For i = 0 To 120 d = Math.Abs(r * Math.Sin(th)) x = r * Math.Cos(th) + a - d - 20 y = r * Math.Sin(th) + a - d W = 2 * d + 0.5 : L = x + 0.5 : T = y + 0.5 g.DrawEllipse(p, L, T, W, W) th = th + rad Next shadeOff() : PictureBox1.Image = img : g.Dispose() End Sub Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load With PictureBox1 .Left = 0 .Top = 0 .Width = 400 .Height = 500 End With With Me .Width = 500 .Height = 500 End With End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim g As Graphics = Graphics.FromImage(img) : g.Clear(Color.Black) '描画クリア Dim rad As Double = Math.PI / 18 Dim a As Double = 200, b As Double = 100 Dim r As Integer = 60 ', ee As Double = rad Dim th As Double, d As Double, x As Double, y As Double Dim W As Integer, L As Integer, T As Integer Dim p As Pen = New Pen(Color.Black) th = 0 For i = 0 To 40 d = r * Math.Sqrt(2 - 2 * Math.Cos(th)) x = r * Math.Cos(th) + a - d y = r * Math.Sin(th) + a - d W = 2 * d + 0.5 : L = x + 0.5 : T = y + 0.5 'W = 2 * d + 0.5 : L = x + 0.5 : T = y + 0.5 'Dim CC As Integer = th * 360 / Math.PI / 30 g.FillEllipse(New SolidBrush(setColor(i * 3)), L, T, W, W) th = th + rad Next th = 0 For i = 0 To 40 d = r * Math.Sqrt(2 - 2 * Math.Cos(th)) x = r * Math.Cos(th) + a - d y = r * Math.Sin(th) + a - d W = 2 * d + 0.5 : L = x + 0.5 : T = y + 0.5 g.DrawEllipse(p, L, T, W, W) th = th + rad Next shadeOff() : PictureBox1.Image = img : g.Dispose() End Sub End Class