画像を表示するには「画像をメモリに読み込ませる」「メモリに読み込んだ画像を画面に出力する」という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;
}
}
添付ファイル