最終更新 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() 関数でブラシに使った変数を削除します。
|