【DXライブラリ】DrawRoundRect関数で角の丸い四角形を描画する

DrawRoundRect関数の概要

DXライブラリのバージョン3.13a(2014/11/29公開)でDrawRoundRect関数が追加された。

公式サイトのリファレンスには掲載されていないので非公開関数という扱いのようだ。

宣言は次の通り。

int	DrawRoundRect(int x1, int y1, int x2, int y2, int rx, int ry, unsigned int Color, int FillFlag);

DrawBoxに角の丸さを指定する部分が加わったようなものと解釈して問題ないだろう。

x2とy2は実際の座標に+1した値にすることを忘れないように。

丸みの指定はrxとryで別の値を指定することで楕円のような丸みになる。

塗りつぶしの指定でTRUEにすることで塗りつぶしになるが、余計な部分まで描画されてしまうかもしれない。

枠線だけの利用なら大丈夫そうだ。

DrawRoundRect関数のサンプルコード

丸みの指定と塗りつぶしの違いが分かるようなものを用意してみた。

DrawRoundRect(100, 100, 270, 150, 10, 20, GetColor(255, 255, 255), TRUE);
DrawRoundRect(100, 200, 270, 250, 40, 40, GetColor(255, 255, 255), TRUE);
DrawRoundRect(100, 300, 270, 350,  5,  5, GetColor(255, 255, 255), TRUE);
DrawRoundRect(100, 400, 270, 450, 15, 15, GetColor(255, 255, 255), TRUE);

DrawRoundRect(370, 100, 540, 150, 10, 20, GetColor(255, 255, 255), FALSE);
DrawRoundRect(370, 200, 540, 250, 40, 40, GetColor(255, 255, 255), FALSE);
DrawRoundRect(370, 300, 540, 350, 5, 5, GetColor(255, 255, 255), FALSE);
DrawRoundRect(370, 400, 540, 450, 15, 15, GetColor(255, 255, 255), FALSE);

実行結果のスクリーンショットを掲載しておく。

DrawRoundRect サンプル

塗りつぶしありだと余計な部分まで描画されてしまっていることが確認できる。

SetUse3DFlag(FALSE);で対処できそうな気もしたが、試した範囲では解決できなかった。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です