Declare Function PolyPolygon Lib "gdi32" ( _ ByVal hDC As Long, _ ByRef Points As POINT, _ ByRef Counts As Long, _ ByVal CountNum As Long) As Long
多角形の境界は選択されているペンによって描画される。多角形の塗りつぶしは選択されているブラシによって行われる。多角形同士が重なる場合、SetPolyFillModeの設定が反映される。
描画される多角形の数はCountNumによって指定される。各多角形に含まれる頂点の数は配列Countsによって指定される。実際の頂点の座標は配列Pointsによって指定される。配列Pointsの最初のCounts[0]個の座標が最初の多角形の頂点の座標である。次のCounts[1]個の座標が二番目の多角形の頂点の座標である。同様に、最後のCounts[CountNum-1]個の座標が最後の多角形の頂点の座標である。
引数の意味は以下の通り。
hDC | 描画先のデバイスを識別するデバイスコンテキストのハンドル。 |
Points | 多角形の頂点の座標の配列。 |
Counts | 各多角形に含まれる頂点の座標の数を表す配列。 |
CountNum | 多角形の数。 |
戻り値は、多角形の塗りつぶしモードである。関数の実行に失敗した場合、0が返される。
Private Sub Command1_Click() Const PI As Single = 3.14159 Const PointNumMax As Long = 5 Dim Points(100) As POINT Dim Counts(100) As Long Dim X As Long Dim Y As Long Dim Cnt As Long Dim PointNum As Long Dim I As Long For PointNum = 3 To PointNumMax Counts(PointNum - 3) = PointNum For I = 0 To PointNum - 1 Points(Cnt).X = Cos(2 * PI * I / PointNum) * 50 + 50 + 100 * (PointNum - 3) Points(Cnt).Y = Sin(2 * PI * I / PointNum) * 50 + 50 Cnt = Cnt + 1 Next Next PolyPolygon Picture1.hDC, Points(0), Counts(0), PointNumMax - 2 End Sub