VC++ トップページ

Section2.4 図形の色を変える

図形の色はペンとブラシで決まります.
ペンは図形のエッジラインの色,ブラシは図形の塗りつぶしの色を決めます.
描画関数を呼んだ時点で設定されているブラシ,ペンの色が反映されます.
ブラシ作成→ブラシ設定→図形描画→ブラシを元に戻す→ブラシ削除, という流れになります(ペンでも同じ).

関数
ブラシの作成
HBRUSH CreateSolidBrush( COLORREF RGB( int r, int g, int b ) );
r,g,b :色合い 各値は0〜255で指定
返り値:成功すればブラシのハンドル,失敗すればNULL

ペンの作成
HPEN CreatePen( int style, int width, COLORREF RGB( int r, int g, int b ) );
style :線のスタイル ( PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT,
PS_DASHDOTDOT, PS_NULL, PS_INSIDEFRAME )
width :ペンの太さ
r,g,b :色合い 各値は0〜255で指定
返り値:成功すればペンのハンドル,失敗すればNULL

ブラシ,ペンの設定
HGDIOBJ SelectObject( hdc, HGDIOBJ newobj );
newobj:設定したいブラシやペンのハンドル
返り値:元々設定されていたハンドル

ブラシ,ペンの削除 後始末は忘れずに
BOOL DeleteObject( HGDIOBJ obj );
obj :使い終わったブラシやペンのハンドル
返り値:成功すればTRUE,失敗すればFALSE


使用例1
ソースのダウンロード

            .
            .
            .
//Windws イベント用関数
LRESULT  CALLBACK  WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
    HDC         hdc;
    PAINTSTRUCT ps;
    HBRUSH      hdefb, hblueb;
    
    //渡された message から、イベントの種類を解析する
    switch(msg){
    case WM_CREATE:
        break;
    
    //----ペイント----
    case WM_PAINT:
        hdc= BeginPaint (hWnd, &ps);
        
        hblueb = CreateSolidBrush( RGB( 0, 0, 255 ) );
        hdefb = (HBRUSH)SelectObject(hdc, hblueb); //一応デフォルトのブラシを保存
        Ellipse( hdc, 10, 20, 60, 70 );
        SelectObject(hdc, hdefb); //一応元のブラシに戻しておく
        DeleteObject(hblueb);
        
        EndPaint(hWnd, &ps);
        break;
            .
            .
            .


使用例2
ちょっと複雑になってしまった.
ソースのダウンロード


VC++ トップページ