最終更新 2003 09/30
サンプルのダウンロード → API_DrawLine.lzh(41k)
全ソースコード
MoveToEx 関数
LineTo 関数
CreatePen 関数
対応しているバージョン
95, 98, Me, NT3.1以降, 2000, XP
使用するヘッダとライブラリ
wingdi.h
gdi32.lib
|
画面に線を描くには次のステップで処理を行います。
1.新しいペンを作る
2.ペンをデバイスコンテキストに選択する(この時元のペンを変数にしまう)
3.MoveTo(), LineTo() 関数で線を描く
4.ペンを元に戻す
5.ペンの設定に使った変数を削除する
1.から順番に説明していきます。
【 ペンを作る 】
新しいペンを作るには CreatePen() 関数を使います。
引数には、左から順番に ペンの種類、ペンの太さ、ペンの色 を指定します。
ペンの種類にはマクロを使います。どういうマクロがあるかはMSDNを
見て下さい。
ペンの種類は色々ありますが、PS_SOLID 以外を使う機会はあまりないと
思います。
ペンの太さはその名の通り、線を引く時の線の太さになります。
0を指定すると一番細い線(1ピクセル)になります。
ペンの色は 通常 RGB() マクロを使って指定します。RGB() マクロの
使い方や色の仕組みは 文字の背景色を変える で説明しているので
そちらをご覧下さい。
【 ペンを選択する 】
新しいペンが作れたら、それをデバイスコンテキストに選択します。
簡単にいうと、「どのペンがいいかな?」と選んで「これ!」と
ペンを手に持ち、いよいよ絵でも書こうとしているような感じです。
このとき、元のペンを変数にしまっておきます。
あとでペンを元に戻す時に必要になります。
自分で作ったペンは必要がなくなったら元に戻さないといけません。
そういう決まりになっています。
この決まりを守らないと、リソースメモリが減ったままの状態になり
システムが不安定になります。(メモリリークという)
ですから、ペンを元に戻す作業は必ず行わなければなりません。
【 線を引く 】
ペンの作成と選択が終わったら、実際に使えるようになるのでようやく
線を描く事ができます。
MoveToEx() 関数で線を引く始点を決めます。
始点が決まったら LineTo() 関数でどこまで線を引くか(終点)を
決めます。
【 元のペンに戻してペンを削除する 】
線を引いたらペンは必要ないので、元のペンに戻して、ペンを
作るのに使った変数を DeleteObject() 関数で削除します。
DeleteObject() 関数を使って削除を行わないと、これもまた
メモリリークの原因になります。
APIを使って図形を描くのは、ペンやブラシのやりとりが
非常に面倒ですが、基本的にどの図形を描くときも、ペンやブラシの
扱い方は同じです。
一度覚えてしまえば、あとはどうということはありません。
線を引く以外にも、四角形や円を描くときにもペンとブラシの
設定をおこないます。
やり方は同じなので、すぐに扱えるようになれると思います。
|