多角形の図形を描画には、Polygonという関数を使います。
なんだかPolyineと似たような名前の関数ですね。
実際似たようなもので、引数が同じです。
違う点は、Polygonでは自動的に終点と始点を結ぶことと、
その閉じた図形内をブラシの色で塗りつぶすことにあります。
例のごとく「多重起動の防止」のソースを使いまわしています。
ウィンドウプロシージャ内に以下の内容を追加します。
//点の座標 POINT pnt[100]; pnt[0].x=0 ; pnt[0].y=0; pnt[1].x=0 ; pnt[1].y=293; pnt[2].x=239 ; pnt[2].y=293; pnt[3].x=239 ; pnt[3].y=0;
POINT構造体のpntの配列を用意し、0から3までの4点分の
配列の中身を指定していきます。始点と終点を結んでくれるので
四角形を描く場合、4点分だけでいいんですね。
//デバイスコンテキストを取得 hdc = BeginPaint(hwnd, &paint); //始点0から4点分線を引き始点と終点を閉じる Polygon(hdc,&pnt[0],4); //デバイスコンテキストを解放 EndPaint(hwnd, &paint);
Polygon関数で開始点と頂点の数を指定します。
点[0]の座標から4つの点を連続して結ぶ線をペンで描き、ブラシで塗りつぶします。
では実行してみましょう。
頂点の扱いが面倒なので、例では四角形しか描いていませんが
この関数を使いこなせば、複雑な多角形を描画することが出来ます。
BOOL Polygon( HDC hdc, const POINT *lpPoints, int nCount );
第一引数 hdc には、デバイスコンテキストのハンドルを指定します
第二引数 *lpPoints には、POINT構造体へのポインターを指定します
第三引数 nCount には、頂点の数を指定します(値は2以上の数でないといけない)
戻り値 成功ならTRUEが、失敗ならFALSEが返ります。
2005/5/22