四角を描く

最終更新 2003 09/30

サンプルのダウンロード → API_DrawRect.lzh(42k)

サンプルプログラムのスクリーンショット

全ソースコード



Rectangle 関数
    
    対応しているバージョン
    95, 98, Me, NT3.1以降, CE1.0以降, 2000, XP
        
    使用するヘッダとライブラリ
    wingdi.h
    gdi32.lib
四角の描き方は基本的に線の引き方と同じです。 線の引き方ではペンを新しく作って、それを選択して、線を描いたら 元に戻して、削除・・・という流れで処理を行いましたが、四角の場合は ペンに加えて、ブラシを新しく作る必要があります。 1.新しいペンとブラシを作る 2.ペンとブラシをデバイスコンテキストに選択する   (この時元のペンとブラシを変数にしまう) 3.Rectangle 関数で四角を描く 4.ペンとブラシを元に戻す 5.ペンとブラシの設定に使ったオブジェクト変数を削除する ペンの作成、選択、削除は、線を描く で説明しているので、ここでは 省略します。 では、1から順番に説明します。 【 ブラシを作る 】 新しいブラシを作るには CreateBrushIndirect() 関数を使います。 この関数の引数には LOGBRUSH という構造体のポインタを渡すように なっているので、あらかじめ LOGBRUSH logBrush; などのように 構造体変数を宣言しておきます。 この構造体のメンバにブラシの情報を設定して CreateBrushIndirect() 関数に渡します。 LOGBRUSH 構造体のメンバは以下の3つです。 lbStyle lbColor lbHatch lbStyle はブラシの種類を設定します。 四角の中を塗りつぶしたい時に BS_SOLID を指定し、四角の中を透明に (四角の枠だけ表示される)したい時は BS_NULL を指定します。 それ以外はめったに使わないでしょう。 lbColor は塗りつぶす色を設定します。 色は RGB マクロを使って指定します。 RGB マクロと色の仕組みは 文字の背景色を変える で説明してるので ここでは省略します。 lbHatch は塗りつぶしパターンを設定します。 格子状の模様で塗りつぶしたりできるみたいですが、必要ないので0を 指定しています。 自分は今のところ使ったことがありません。 【 ブラシを選択する 】 ブラシを作ったら、ペンと同じようにデバイスコンテキストに選択します。 ブラシはペンとは違うので、選択する作業も別々に行わなければいけません。 選択するときに、元のブラシを変数に保存することはペンと同じです。 サンプルを見ればお分かり頂けると思います。 【 四角を描く 】 四角形を描くには Rectangle() 関数を使います。 引数にはデバイスコンテキストハンドルと左上、右下の座標を指定します。 【 元のブラシに戻して変数を削除する 】 この処理もペンと同じです。SelectObject() 関数を使って元のブラシに 戻して、DeleteObject() 関数でブラシに使った変数を削除します。

| home |