図形・文字描画について
画像の描画に入る前に、こちらでは画像なしで行える図形や文字を描画する関数について説明する。
これらは画像が完成する前の仮素材や、デバッグ中の当たり判定の表示として使用することになるだろう。
#include <DxLib.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { ChangeWindowMode( TRUE );//非全画面にセット SetGraphMode( 800 , 600 , 32 );//画面サイズ指定 SetOutApplicationLogValidFlag( FALSE ) ;//Log.txtを生成しないように設定 if(DxLib_Init() == 1){return -1;}//初期化に失敗時にエラーを吐かせて終了 // //ここで敵やプレイヤーのオブジェクトの実体を作る // while( ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { ClearDrawScreen();//裏画面消す SetDrawScreen(DX_SCREEN_BACK);//描画先を裏画面に int Cr = GetColor(255, 255, 255); int i = 14; DrawLine(100, 100, 200, 300, Cr); DrawBox(200, 100, 300, 200, Cr, TRUE); DrawCircle(400, 400, 100, Cr, TRUE); //以下2行のコメントアウトを外すと文字列の大きさ・太さが変更される //SetFontSize(60); //SetFontThickness(0); //引数に直接GetColorを渡すことも可能 DrawFormatString(10, 10, GetColor(255, 0, 0), ">>%d", i); ScreenFlip(); } DxLib_End(); return 0; }
GetColor(int Red, int Green, int Blue);
図形や文字の色を決定する。
図形や文字を描画する関数は引数として色を必要とするので、そちらにこの関数またはこの関数を代入した変数を渡す。
DrawLine(int x1, int y1, int x2, int y2, int Color);
点(x1, y1)と点(x2, y2)を結ぶ線を描画する。描画色はColorで指定したものとなる。
DrawBox(int x1, int y1, int x2, int y2, int Color, int FillFlag);
(x1, y1)を左上、(x2, y2)を右上の頂点とする四角形を描画する。描画色はColorで指定したものとなる。
FillFlagをTRUEにした場合は四角形の中身も描画色で塗りつぶされ、FALSEにした場合は輪郭のみ描画される。
DrawCircle(int x, int y, int r, int Color, int FillFlag);
(x, y)を中心座標とする半径rの円を描画する。描画色はColorで指定したものとなる。 FillFlagをTRUEにした場合は円の中身も描画色で塗りつぶされ、FALSEにした場合は輪郭のみ描画される。
DrawFormatString(int x, int y, int Color, char* FormatString, ...);
(x, y)を起点に文字列を描画する。描画色はColorで指定したものとなる。
もう1つの文字描画関数であるDrawStringとは異なり、以下のようにprintfに近い書き方が可能。
int i = 100; DrawFormatString(10, 10, GetColor(0,0,0), "SCORE:%d", i);
SetFontSize(int FontSize);
FontSizeに描画する文字列のフォントのサイズ(ドット単位)を渡すことで、描画する文字列の大きさを設定できる。
SetFontThickness(int ThickPal);
ThickPalに描画する文字列の文字の太さ(0~9)を渡すことで、描画する文字列の太さを指定できる。
その他
主に使用することになるのは以上の通りであるが、他にも楕円を描画するDrawOvalや三角形を描画するDrawTriangle、点を描画するDrawPixelなどが存在する。
DXライブラリの公式サイトに関数リファレンスページが存在するため、気になったら参考にしてみるといいだろう。
文字列のフォントの変更などについても、そちらに記載されている。 以降も、この資料では使用頻度の高い関数に絞って説明するため、他にも気になる関数があればそちらを参考にするとよい。