赤い線を描いてみます。
"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に代入しています。。