トップページ > 過去ログ > 記事閲覧
画像を徐々に透明にしていく
名前:of 日時: 2008/12/04 10:51

画像ごとに徐々に色を透明にしていきたいのですが 関数で画像の透明度を指定することはできるのでしょうか? 初歩的な質問で申し訳ありませんが判る方いらっしゃればよろしくお願いします。

Page: 1 |

Re: 画像を徐々に透明にしていく ( No.1 )
名前:ライブラリ使用者 日時:2008/12/05 00:57

下記のようなのでどうでしょうか? 透明度を指定ではなく、ブレンド用の画像に従い透明度を変化させる方法ですが。 while() if(i <= 0) i=256; ClearDrawScreen() ; DrawBlendGraph( 0, 0, GrHandle1, FALSE, BlendGraph, i, 128 ) ; ScreenFlip() ; i-=2;
Re: 画像を徐々に透明にしていく ( No.2 )
名前:of 日時:2008/12/06 17:02

レスりがとうございました。 試してみます。
Re: 画像を徐々に透明にしていく ( No.3 )
名前:管理人 日時:2008/12/08 02:55

ライブラリ使用者さん、申し訳ありませんがご提示して頂いたプログラムでは正常に動作しそうにありません 画像を徐々に透明にするという用途でしたら SetDrawBlendMode が有用です 画像 Test1.bmp が徐々に透明になったり、再び不透明になったりするプログラムを掲載させて頂きますので 宜しければご覧になってみて下さい #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int handle, alpha, add; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 画像の読み込み handle = LoadGraph( "Test1.bmp" ); // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); // アルファ値の初期値を完全不透明にする alpha = 255 ; // 変化の向きをマイナスにする add = -1 ; // メインループ(何かキーが押されたらループを抜ける) while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 ) { // アルファ値を変化 alpha += add ; // アルファ値が 0 か 255 になったら変化の方向を反転する if( alpha == 0 || alpha == 255 ) { add = -add ; } // 画面を緑で塗りつぶす DrawBox( 0, 0, 640, 480, GetColor( 0, 255, 0 ), TRUE ) ; // 画像のアルファブレンドで描画 // ( 描画した後ブレンドモードを元に戻す ) SetDrawBlendMode( DX_BLENDMODE_ALPHA, alpha ) ; DrawGraph( 0, 0, handle, TRUE ); SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ) ; // 裏画面の内容を表画面に反映 ScreenFlip(); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }

Page: 1 |