int CombineRgn( HRGN hDestRgn, HRGN hSrcRgn1, HRGN hSrcRgn2, int CombineMode);
Declare Function CombineRgn Lib "gdi32" ( _ ByVal hDestRgn As Long, _ ByVal hSrcRgn1 As Long, _ ByVal hSrcRgn2 As Long, _ ByVal CombineMode As Long) As Long
指定する三つのリージョンはそれぞれ異なるものを指定する必要はない。
引数の意味は以下の通り。
hDestRgn | 結合結果のリージョンを格納するリージョン。 |
hSrcRgn1 | 結合元のリージョン。 |
hSrcRgn2 | 結合元のリージョン。 |
CombineMode | 結合する方法。後述の表を参照。 |
CombineModeには、以下のいずれかのフラグを指定する。
RGN_AND | 二つのリージョンの共有部分のみが新規リージョンとなる。 |
RGN_COPY | hSrcRgn1が複製される。 |
RGN_DIFF | hSrcRgn1のうちhSrcRgn2に含まれない領域のみが新規リージョンとなる。 |
RGN_OR | 二つのリージョンの論理和が新規リージョンとなる。 |
RGN_XOR | 二つのリージョンの非共有部分のみが新規リージョンとなる。 |
戻り値は、以下のフラグのいずれかである。
NULLREGION | 空のリージョンが作成された。 |
SIMPLEREGION | 境界の重ならないリージョンが作成された。 |
COMPLEXREGION | ひとつ以上の長方形からなるリージョンが作成された。 |
ERROR | エラーが発生した。 |
' 交差する二つの長方形からなるリージョンを描画 Private Sub Command1_Click() Dim hRgn1 As Long Dim hRgn2 As Long 'リージョンの作成 hRgn1 = CreateRectRgn(0, 0, 100, 100) hRgn2 = CreateRectRgn(50, 50, 150, 150) 'リージョンの結合 CombineRgn hRgn1, hRgn1, hRgn2, RGN_XOR 'リージョンの描画 FillRgn Picture1.hDC, hRgn1, GetStockObject(WHITE_BRUSH) '後処理 DeleteObject hRgn1 DeleteObject hRgn2 End Sub