Polyline() で三角形、四角形、五角形を描く

VC++ の Polyline() で直線をつないで「三角形、四角形、五角形」を描きます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. プロジェクトを作成して WM_PAINT を表示して下さい。
    プロジェクトの作成は Windows プログラムを自動的に作成する を参照して下さい。
  2. 三角形,四角形,五角形を描くための領域を定義して、座標を格納します。
    領域はプロトタイプ宣言の前ぐらいに置くと良いでしょう。
        POINT   pont1[] = { 60,20, 10,100, 110,100, 60,20 };
        POINT   pont2[] = { 150,30, 250,30, 220,90, 120,90, 150,30 };
        POINT   pont3[] = { 310,20, 360,50, 340,100, 280,100, 260,50, 310,20 };
        
  3. WM_PAINT に図形を描画するコードを追加します。
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // TODO: 描画コードをここに追加してください...
            HPEN        hPen1,hPen2,hPen3,hOldPen;
    
            hPen1= CreatePen(PS_SOLID,5,RGB(255,0,0));      // 幅5ピクセルの赤ペン
            hPen2= CreatePen(PS_SOLID,5,RGB(0,255,0));      // 幅5ピクセルの緑ペン
            hPen3= CreatePen(PS_SOLID,5,RGB(0,0,255));      // 幅5ピクセルの青ペン
    
            hOldPen= (HPEN)SelectObject(hdc,hPen1);         // hPen1 を選択
            Polyline(hdc,pont1,4);
            SelectObject(hdc,hPen2);                        // hPen2 を選択
            Polyline(hdc,pont2,5);
            SelectObject(hdc,hPen3);                        // hPen3 を選択
            Polyline(hdc,pont3,6);
    
            SelectObject(hdc,hOldPen);                      // hPen を戻す
            DeleteObject(hPen1);                            // ペンを削除
            DeleteObject(hPen2);
            DeleteObject(hPen3);
        
  4. ウインドウのサイズを幅=400,高さ=180 に設定して下さい。
    ウインドウサイズの設定は 矩形で国旗を描く を参照して下さい。
  5. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    コンパイルの進行状況とエラーがあれば、エラーメッセージが表示されます。
    ページ先頭の画像が表示されたら完成です。

Polyline() で塗りつぶした図形を描く

  1. 多角形を描くための領域を設定して座標を定義します。
        POINT   pont1[] = { 80,30, 180,30, 150,90, 50,90 };
        POINT   pont2[] = { 250,20, 300,50, 280,100, 220,100, 200,50 };
        
  2. WM_PAINT に塗りつぶした多角形を描画するコードを追加します。
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // TODO: 描画コードをここに追加してください...
            HBRUSH      hBrush1,hBrush2,hOldBrush;
            hBrush1= CreateSolidBrush(RGB(100,50,200));
            hBrush2= CreateSolidBrush(RGB(100,180,100));
            hOldBrush= (HBRUSH)SelectObject(hdc,hBrush1);       // ブラシを選択
            Polygon(hdc,pont1,4);
            hOldBrush= (HBRUSH)SelectObject(hdc,hBrush2);       // ブラシを選択
            Polygon(hdc,pont2,5);
            SelectObject(hdc,hOldBrush);                        // ブラシを戻す
            DeleteObject(hBrush1);                              // ブラシを削除
        

【演習】

セイシェルと南アフリカ共和国の国旗を横に並べて描画して下さい。

セイシェル

南アフリカ共和国

超初心者のプログラム入門(Win32API C++)