閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

GDI+

普通に GDI を使うより色々な処理が随分楽にできるようになっている GDI+ ですが、かえって使いにくくなっている部分もあるようで。

Win32API の Rectangle 関数は、デバイスコンテキストに関連付けられているペンで矩形の枠を描き、またブラシがあればそのブラシを使って塗り潰しを行ってくれますが、 GDI+ の場合これはできないらしい。

Graphics::DrawRectangle は引数にペンを渡すとそれを使って矩形を描いてくれますが、塗り潰しはされません。塗り潰しをしたければ Graphics::FillRectangle を使えば良いのですが、こちらは引数にブラシしか受け取らないので、今度は枠が描かれません。まあ両方一緒に使えばいいのですが、一気にやってくれたらなあと少し思いました。分かれているほうが自然なのかな?

あと Graphics::SetClip や Region クラスには多角形のリージョンを作るためのインターフェイスが用意されていません。 Win32API では CreatePolygonRgn を使うことで多角形のリージョンが作れるのですが……。

これはパスを使えと言うことなのだろうか。 GDI+ なら HRGN を引数に取るコンストラクタもあるので、それを使う手もありますが、 .NET ではそんなものはないので、やはりパスなんだろう。パスなんて使ったことないのですが、これを機に覚えておくか。