赤い線を描いてみます。
"MyApp.h" ファイルだけ載せます。 青い部分を見て下さい。
// // MyApp.h // class MyApp : public MyMainWnd{ public: // WM_PAINT void wmPaint(HDC hdc){ MyDC g(hdc); // 線の色を指定-------------------------- HPEN hNewPen, hOldPen; hNewPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); // ペンを作る hOldPen = (HPEN)SelectObject(hdc, hNewPen); // ペンを登録 // 直線を描く---------------------------- g.MoveTo(10, 10); g.LineTo(100, 100); //--------------------------------------- SelectObject(hdc, hOldPen); // 元のペンに戻す DeleteObject(hNewPen); // ペンを開放 } };
実行画面です。
描画関数と、色は切り離されています。 ペンを作って、それで描くということです。 このペンは、色だけでなく点線とかも指定できます。 やり方は、CreatePen関数でペンを作り、SelectObject関数でペンを登録します。
HPEN hNewPen; hNewPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); // ペンを作る SelectObject(hdc, hNewPen); // ペンを登録する
このhNewPenを使って描画してくれます。 さて、色は、RGB( , , ) を使います。赤、緑、青の3色を数値で与えます。 描画を終えたらペンを開放します。
DeleteObject(hOldPen);
さて、ペンを開放するとペンがなくなってしまいます。 そのため、元々あったペンを再登録しています。 元のペンは、SelectObject関数が返してくれるので、hOldPenに代入しています。。