



35. 画面を段々暗く & 段々明るく
フェードイン、フェードアウトといって、画面を次第に明るくしたり、次第に暗くしたりといったことは、
物語が始まる時や終わるときによく用いられる手法ですね。
これは画面の輝度を使うことで実現できます。
今回はカウンターを用いて、カウントし、画面を段々明るく&段々暗くという事を行います。
画面の輝度を設定する時にはSetDrawBright( R , G , B );という関数を用います。
R,G,Bには0~255の値が入り、それぞれ赤、緑、青の輝度を示します。
SetDrawBright( 255 , 255 , 255 );
この状態は通常の状態。全て赤緑青の明るさが全て255の状態です。
今の状態から明るさを減らさない状態と覚えるといいでしょう。
輝度を245にすると通常の明るさより10減らすといった感じです。
通常の明るさより増やす事はできません。ですから
SetDrawBright( 0 , 0 , 0 );
これは真っ暗な状態です。
SetDrawBright( 0 , 0 , 0 );
↓
描画
↓
SetDrawBright( 1 , 1 , 1 );
↓
描画
↓
SetDrawBright( 2 , 2 , 2 );
↓
としていき、0〜255まであげてやれば段々明るくなりますね。
段々暗くする時はその逆を、通常の明るさに戻したい時は SetDrawBright( 255
, 255 , 255 ); と
書けばいいのです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
int c=0,White;
White = GetColor( 255 , 255 , 255 ) ; //色の取得
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while( 1 ){
ClearDrawScreen(); // 裏画面のデータを全て削除
if(c>=0 && c<256) //cが0~256の時
SetDrawBright( c , c , c ); //段々あかるく(c= 0->255)
if(c>=256 && c<400) //cが256~400の時
SetDrawBright( 255 , 255 , 255 ); //通常の明るさ
if(c>=400 && c<400+256) //cが400~400+256の時
SetDrawBright( 255-(c-400) , 255-(c-400) , 255-(c-400) );//段々暗く(c= 255->0)
DrawBox( 0 , 0 , 640 , 480 , White , TRUE) ; //画面全体に白い四角形を描画
c++; //cをカウントアップ
if(c==400+256) break; //暗くなり終わったら終了
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
実行結果(例)
- Remical Soft -