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 -