キャラクタがセリフをしゃべったり、メニュー項目を表示したりする時、文字の描画が必要になります。
この章では文字の描画の方法についてみていきましょう。
DXライブラリで文字を描画するには DrawFormatString関数 を使用します。DrawFormatString関数 のリファレンスを確認 してみましょう。
宣言 |
int DrawFormatString( int x , int y , int Color , char *FormatString ,
... ) ; |
概略 | 書式付き文字列を描画する |
引数 | int x , y : 文字列を描画する起点座標 int Color : 描画する文字列の色 char *FormatString : 描画したい書式付き文字列のアドレス ... : 書式付き文字列に付随する引数 |
第三引数に存在する Color には色を指定します。色は GetColor関数 で取得出来ます。 GetColor関数 のリファレンスを確認 してみましょう。
宣言 | int GetColor( int Red , int Green , int Blue ) ; |
概略 | 色コードを取得する |
引数 | Red , Green , Blue : 取得したい色の各輝度値(0~255) |
戻り値 | カラーコード |
この関数は特に難しくありません。RGBの値を0~255で渡せば色コードが int型 で返ってきます。
ですから、例えば白の色コードを取得したい時は
int Col = GetColor( 255, 255, 255 );
で取得できますし、赤なら GetColor( 255, 0, 0 )、黄色なら GetColor( 255, 255,
0 ) となるわけです。なお、GetColor( 0, 0, 0 )は黒になります。
DrawFormatString関数 の第四引数以降は printf関数 のような使い方が出来ます。「可変長引数」という奴ですね。
例えばコンソールプログラムで
int a=10, b=20;
printf("%dと%dです。", a, b );
は「10と20です」と表示されていましたよね。これと同じ使い方が出来ます。
ですから (0,0) の座標に上の文を白で表示したい時は
DrawFormatString( 0, 0, GetColor(255,255,255), "%dと%dです。", a,
b);
となるわけです。
では斜めに動きながら描画開始位置を表示し続けるサンプルプログラムを見て仕様を再確認しましょう。
#include "DxLib.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定 int x=0, y=0; int Green = GetColor( 0, 255, 0 ); // 緑の色コードを取得 // while(裏画面を表画面に反映, メッセージ処理, 画面クリア) while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){ DrawFormatString( x, y, Green, "座標[%d,%d]", x, y ); // 文字を描画する x = x + 2; // x座標を2加算 y = y + 1; // y座標を1加算 } DxLib_End(); // DXライブラリ終了処理 return 0; }
- Remical Soft -