HRGN CreatePolygonRgn( CONST POINT *PointArray, int PointNum, PolyFillMode);
Declare Function CreatePolygonRgn Lib "gdi32" ( _
ByRef PointArray As POINT, _
ByVal PointNum As Long, _
ByVal PolyFillMode As Long) As Long
引数の意味は以下の通り。
| PointArray | 多角形の各頂点の座標の配列。 |
| PointNum | 多角形の頂点の個数。 |
| PolyFillMode | リージョンの描画の際の塗りつぶしモード。後述の表を参照。 |
PolyFillModeには、以下のいずれかのフラグを指定可能。
| ALTERNAME | 交互モード。水平線と交わる各線分について、奇数番目の線分と偶数番目の線分の間に位置する領域のみ塗りつぶしが行われる。 |
| WINDING | 全域モード。すべての領域が塗りつぶされる。 |
戻り値は、作成されたリージョンのハンドルである。関数の実行に失敗した場合、NULLが返される。
' 星の描画
Private Sub Command1_Click()
Const POINT_NUM As Long = 5
Const PI As Single = 3.14159
Dim p(POINT_NUM - 1) As POINT
Dim hRgn As Long
Dim I As Long
'星型リージョン作成用データ初期化
For I = 0 To POINT_NUM - 1
p(I).X = 100 * Cos(2 * PI * I * 2 / POINT_NUM) + 100
p(I).Y = 100 * Sin(2 * PI * I * 2 / POINT_NUM) + 100
Next
'リージョンの作成
hRgn = CreatePolygonRgn(p(0), POINT_NUM, ALTERNATE)
'リージョンの描画
FillRgn Picture1.hDC, hRgn, GetStockObject(WHITE_BRUSH)
'リージョンの破棄
DeleteObject hRgn
End Sub