14. メモリに画像を読み込んで表示する。



最初に紹介した画像を表示する関数LoadGraphScreen()では、毎回ファイルの読み込みをしていますが

同じ画像ファイルを毎回読み込ませるのは無駄もあり、処理時間の遅れに繋がります。

そこであらかじめ画像データを読み込ませ、その画像データのハンドル(画像の識別番号)で画像を扱えば

とても楽に早く処理が出来ます。今回はハンドルをint型の変数に代入して画像を表示する方法を紹介します。

ゲームでは全てこの方法で画像を表示します。

ハンドルを受け取るにはLoadGraph関数を使用し、LoadGraph("画像のファイル名");の返り値を変数に代入すればよいのです。

ハンドルを使った画像の表示にはDrawGraph関数を使用し、

DrawGraph( x , y , ハンドル , Fill_Flag);

と書きます。ハンドルにはint型の先ほど格納したハンドルを指定し、Fill_Flagは今まで通り透過するかどうかのフラグです。

サンプルではchar.pngのハンドルをint型変数imageに代入し、表示しています。

↓コピー&コンパイル用サンプルプログラム↓


#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode( TRUE ) ;               // ウィンドウモードに変更
    if( DxLib_Init() == -1 ) return -1 ;     // DXライブラリ初期化処理

    int image, image2;                       //ハンドルを受け取るためのint型変数を宣言
    image  = LoadGraph( "back.bmp" ) ;       //back.bmpのハンドルを代入
    image2 = LoadGraph( "char.png" ) ;       //char.pngのハンドルを代入
    DrawGraph( 0 , 0 , image  , FALSE ) ;    //back.bmpを表示
    DrawGraph( 0 , 0 , image2 , FALSE ) ;    //char.pngを表示

    WaitKey();                               //何かキー入力があるまで待つ
    DxLib_End() ;                            //DXライブラリの終了処理
    return 0 ;
}

実行結果


方法は違いますが結果として3節と同じ事をしたので実行結果は3節と同じになります。

→掲示板で質問する



- Remical Soft -