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