OffsetRgn リージョンの移動

Cの宣言:

int OffsetRgn(
	HRGN hRgn,
	int XOffset,
	int YOffset);

VBの宣言:

Declare Function OffsetRgn Lib "gdi32" ( _
    ByVal hRgn As Long, _
    ByVal XOffset As Long, _
    ByVal YOffset As Long) As Long

説明:

リージョンを移動する。

引数の意味は以下の通り。
hRgn 移動するリージョン。
XOffset 移動量の水平成分。
YOffset 移動量の垂直成分。

戻り値は、以下のフラグのいずれかとなる。
NULLREGION 空のリージョンである。
SIMPLEREGION 単一の長方形からなるリージョンである。
COMPLEXREGION 複数の長方形からなるリージョンである。
ERROR エラーが発生した。

VBのサンプル:

OffsetRgnを使用して多数個の長方形からなるリージョンを作成し、ピクチャボックスに描画する。
'複数個の長方形リージョンを結合
Private Sub Command1_Click()

    Dim hRgn1 As Long
    Dim hRgn2 As Long
    Dim I As Long
    
    'リージョンの作成
    hRgn1 = CreateRectRgn(0, 0, 100, 100)
    hRgn2 = CreateRectRgn(0, 0, 100, 100)
    
    For I = 1 To 5
        OffsetRgn hRgn2, 20, 20
        'リージョンの結合
        CombineRgn hRgn1, hRgn1, hRgn2, RGN_XOR
    Next
    
    'リージョンの描画
    FillRgn Picture1.hDC, hRgn1, GetStockObject(WHITE_BRUSH)

    '後処理
    DeleteObject hRgn1
    DeleteObject hRgn2

End Sub

(original text:2000/02/13 更新)

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