4. 透過処理をした画像を表示する。

透過処理とはどのような処理か?まず、先ほどの画像に背景を付けて表示してみましょう。

背景に使うのはback.bmpです。画像の中身はこちらです。


back.bmp (を1/4に縮小したもの)

これを単純に重ねて表示するとこうなります。

実行結果


では、透過処理をしてみます。

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


#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了 
 
        LoadGraphScreen( 0 , 0 , "back.bmp" , FALSE ) ;
        LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ;
 
        
        WaitKey() ;             // 結果を見るためにキー待ち(『WaitKey』を使用)
        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}

実行結果


見ていただけたら判る通り、透過処理をするとキャラの周りがうまく背景になっていますね。

先ほどの関数の第四引数は透過処理をするかどうかのフラグなんです。

LoadGraphScreen( 0 , 0 , "back.bmp" , FALSE ) ;

TRUE=透過処理をする。  FALSE=透過処理をしない。

背景は透過処理する必要が無いのでFALSEで、キャラはTRUEにしましょう。

       --発展知識--

透過処理されるのは、限りなく黒に近い色か、画像に予め透過処理をしてある部分です。

画像は光の3原色で表します。bmpファイルではRGBそれぞれ0〜255の階調で表しますが、この値を

(R,G,B)=(0,0,0)の色つまり真っ黒にすると透過されます。黒だけど、透過させたくないという部分がありましたら

その部分に見えない程度の色をつけましょう。(例(R,G,B)=(10,10,10))

JPEGにすると真っ黒のピクセルが真っ黒ではなくなるので透過されません。JPEGは使わないようにしましょう。

容量が多くてかまわない場合はbmpで、容量を軽くしたい場合はpng形式の画像にしましょう。

       ------------

→掲示板で質問する



- Remical Soft -