画像を表示するには「画像をメモリに読み込ませる」「メモリに読み込んだ画像を画面に出力する」という2つを実行する必要があります。
画像をメモリに読み込む
画像をメモリに読み込むにはLoadGraph関数を呼び出します。
int LoadGraph( char *FileName ) ;
引数に画像の名前を渡すことで、画像をメモリに読み込み、グラフィックハンドル?を返します。グラフィックハンドルはカラーコードの親戚のようなもので、メモリに読み込んだ画像の識別番号です。どこに保存したかをint型で表現したものと考えて差し支えありません。指定する画像は別の階層のものでも大丈夫です。
なお、読み込むことの出来る画像形式はBMP,JPEG,PNG,DDS,ARGB,TGAの6種類です。
また、画像を読み込むのは当然ながらメインループを1週するごとに行う必要はありません。
なお、読み込むことの出来る画像形式はBMP,JPEG,PNG,DDS,ARGB,TGAの6種類です。
また、画像を読み込むのは当然ながらメインループを1週するごとに行う必要はありません。
メモリに読み込んだ画像を出力する
メモリに読み込んだ画像を出力するには、DrawGraph関数を呼び出します。
int DrawGraph( int x, int y, int GrHandle, int TransFlag ) ;
第1引数、第2引数は描画する画像の左上の座標です。第3引数は先ほど読み込ませたグラフィックハンドルです。第4引数は透過色?を有効にするかどうかのフラグです。TRUEで有効、FALSEで無効です。
描画の座標指定が左上なので、中心に表示したいとき単純に(320,240)と指定すると、「画像の左上が」中心に表示されてしまいますので、なんらかの方法で位置を修正する必要があります。
描画の座標指定が左上なので、中心に表示したいとき単純に(320,240)と指定すると、「画像の左上が」中心に表示されてしまいますので、なんらかの方法で位置を修正する必要があります。
メモリに読み込んだ画像データを全て削除する
メモリに読み込んだ画像データを全て削除するにはInitGraph関数を呼び出します。
int InitGraph( void ) ;
グラフィックを使用しなくなったときに呼び出し、メモリを解放します。
サンプルソース
画像を読み込み、画面に描画します。サンプル画像をプロジェクトがあるフォルダに保存してください。
sample.bmp
sample.bmp
#include"DxLib.h" void GetKeyInput( int *KeyBuf ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if(DxLib_Init()==-1) return 1; SetDrawScreen(DX_SCREEN_BACK); // メインループが始まる前に画像を読み込む。 int SampleGraphicHandle = LoadGraph("sample.bmp"); while(1){ if( ProcessMessage() != 0 || CheckHitKey( KEY_INPUT_ESCAPE ) != 0 ) break; int Key[256]; GetKeyInput( Key ); ClearDrawScreen(); // 画像を描画する。マウス手書き。 DrawGraph(50,50,SampleGraphicHandle,FALSE); ScreenFlip(); } InitGraph(); // 読み込んだ画像を削除、メモリを解放する。 DxLib_End(); return 0; } void GetKeyInput( int *KeyBuf ){ char damy[256]; GetHitKeyStateAll( damy ) ; for( int i=0 ; i<256 ; i++ ){ if( damy[i] == 1 ) KeyBuf[i]++; else KeyBuf[i] = 0; } }
添付ファイル