多角形を描く

前回では四角形と楕円を描きましたが、
複雑な多角形を扱いたい時が出てくることもあるでしょう。
そこで、今回は多角形を描いてみましょう。

Polygon

多角形の図形を描画には、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つの点を連続して結ぶ線をペンで描き、ブラシで塗りつぶします。
では実行してみましょう。

Polygon

頂点の扱いが面倒なので、例では四角形しか描いていませんが
この関数を使いこなせば、複雑な多角形を描画することが出来ます。

BOOL Polygon( HDC hdc, const POINT *lpPoints, int nCount );
第一引数 hdc には、デバイスコンテキストのハンドルを指定します
第二引数 *lpPoints には、POINT構造体へのポインターを指定します
第三引数 nCount には、頂点の数を指定します(値は2以上の数でないといけない)

戻り値 成功ならTRUEが、失敗ならFALSEが返ります。

ソースのダウンロード

2005/5/22


戻る