S.16 Color Leaves

目次のページ; 前のページ; 次のページ

 領域の塗りつぶしの例題です。楕円を重ね描きしたものです。Drawpaint ルーチンの中で、Win32APIのExtFloodFillを使って塗りつぶしをしています。

Public Sub proc16() 'Color Leaves
    Dim Igra, p, c1, c2, c3, c4, c5
    a = 220
    c1 = &HFF0000 : c2 = &HFF00& : c3 = &HFF&
    c4 = &HFFC0FF : c5 = &HFFFF&
    Dperas : Dpwind 0, 0, 640
    Select Case Ivar
        Case 1: N = 2
        Case 2: N = 3
        Case 3: N = 4
        Case 4: N = 6
        Case Else: N = 2
    End Select
    Igra = 0: K = 200
    For p = 1 To 0.2 Step -0.2
        For Th = 0 To 2 * pie + 0.1 Step pie / K
            r = Abs(a * Cos(N * Th)) * p
            X = r * Cos(Th)
            Y = r * Sin(Th)
            DrawPolyLine X, Y, Igra
        Next Th
        Igra = 0
    Next p
'
    For m = 1 To 5
        Select Case m
            Case 1: FormGraphic.Picture1.FillColor = c1: p = 1
            Case 2: FormGraphic.Picture1.FillColor = c2: p = 0.8
            Case 3: FormGraphic.Picture1.FillColor = c3: p = 0.6
            Case 4: FormGraphic.Picture1.FillColor = c4: p = 0.4
            Case 5: FormGraphic.Picture1.FillColor = c5: p = 0.2
        End Select
        For Th = 0 To 2 * pie Step pie / N
            r = a * p - 10
            X = r * Cos(Th)
            Y = r * Sin(Th)
            FormGraphic.Picture1.FillStyle = 0
            Drawpaint X, Y
        Next Th
    Next m
End Sub

次のページ