関連記事
開発環境
- Windows11
- Visual Studio 2022
- DXライブラリ Ver3.24d
矩形の描画
DrawPixel関数とループを組み合わせることで矩形(すべての角が直角の四辺形)を描くこともできますが、DXライブラリには矩形を描画するDrawBox
関数が用意されています。
#include "DxLib.h"
int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
// ウィンドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() == -1 )
{
// -1ならエラーとして終了
return 0;
}
// 矩形の描画
DrawBox( 100, 100, 200, 200, 0xFFFFFF, TRUE );
// プログラムの一時停止
WaitKey();
// DXライブラリの破棄
DxLib_End();
return 0;
}
実行結果
DrawBox関数の引数
DrawBox関数の引数を日本語にすると以下のような形になります。
DrawBox( 左上頂点のX座標, 左上頂点のY座標, 右下頂点のX座標, 右下頂点のY座標, 色, 塗りつぶしフラグ );
座標
第一引数から第四引数までが座標の指定です。この値で描画する矩形の位置や大きさが決定します。
色
第五引数は矩形の色の指定です。サンプルプログラムでは16進数(0xFFFFFF)で指定し、この場合は白になります。16進数による色の表現については関連記事のピクセルの描画と座標・色の考え方で紹介しています。
塗りつぶしフラグ
第六引数は塗りつぶしのフラグでTRUE
かFALSE
を指定します。TRUEにすると単色で矩形が塗りつぶされます。FALSEを指定すると輪郭のみ描画されます。
重なったとき
矩形が重なるような位置に描画されたときは、後から描画した矩形が前面に表示されます。
#include "DxLib.h"
int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
// ウィンドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() == -1 )
{
// -1ならエラーとして終了
return 0;
}
// 矩形の描画
DrawBox( 50, 50, 150, 150, 0xFFFF00, TRUE ); // 黄色の矩形
DrawBox( 100, 100, 200, 200, 0xFF0000, TRUE ); // 赤の矩形
// プログラムの一時停止
WaitKey();
// DXライブラリの破棄
DxLib_End();
return 0;
}
実行結果
DrawPixel関数やその他の描画関数を使用した場合も、要素が重なった際には後に描画された要素が前面になるように表示されます。
座標の指定を逆にしたとき
通常、左上の座標が右下の座標より数値的に小さくなるような値は渡しませんが、渡すとどうなるか検証しました。
// 右下の座標の方が小さくなるように指定
DrawBox( 100, 100, 0, 0, 0xFFFFFF, TRUE );
右下座標と左上座標の範囲が問題なく塗りつぶされました。
DXライブラリのソースコードを確認したところ、左上と右下の座標は描画前に大小比較を行って必要なら入れ替えているようです。