パスをリージョンへ変換(VB)

説明:

互いに重なり合う三つの円からなるパスを作成する。これをリージョンに変換することにより、任意の位置に複数回図形を描画する。

(本サンプルはNTでのみ動作可能。95/98の場合、描画関数を変更すること。)

キーワード:

BeginPath, Ellipse, EndPath, PathToRegion, OffsetRgn, InvertRgn

サンプルコード:

Private Sub Command1_Click()

    Const PI As Single = 3.14159
    Dim I As Long
    Dim DX As Long
    Dim DY As Long
    Dim X As Long
    Dim Y As Long
    Dim hRgn As Long

    '互いに重なり合う三つの円からなるパスを作成
    BeginPath Picture1.hDC
    
    For I = 0 To 2
        Ellipse Picture1.hDC, _
            20 * Cos(PI * 2 / 3 * I) - 25, 20 * Sin(PI * 2 / 3 * I) - 25, _
             20 * Cos(PI * 2 / 3 * I) + 25, 20 * Sin(PI * 2 / 3 * I) + 25
    Next
    
    EndPath Picture1.hDC

    'パスをリージョンに変換
    hRgn = PathToRegion(Picture1.hDC)

    OffsetRgn hRgn, 50, 50

	'作成したリージョンを五つ描画する
    For I = 1 To 5
        DX = Rnd * 100 - X
        DY = Rnd * 100 - Y
        X = X + DX
        Y = Y + DY
        OffsetRgn hRgn, DX, DY
        InvertRgn Picture1.hDC, hRgn
    Next

End Sub

(original text:1999/10/21 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。