2 using System.Collections.Generic;
3 using System.Diagnostics;
10 /// フェードアウト用のタイル画像を表示する。
13 /// パネル画像(任意)の透明度を徐々に濃くしていくことで、フェードアウトを実現する。
15 class フェードアウト : FDK.Activity
17 public bool 完了した => this.透明度カウンタ.終了値に達した;
18 public bool 完了していない => !( this.完了した );
20 public フェードアウト( float 総フェード時間sec )
22 Debug.Assert( 0.0f < 総フェード時間sec );
23 this.総フェード時間sec = 総フェード時間sec;
29 long 値をひとつ増加させるのにかける時間ms = (long) ( this.総フェード時間sec * 1000f / ( 最後の値 - 最初の値 ) );
30 this.透明度カウンタ.開始する( 最初の値, 最後の値, 値をひとつ増加させるのにかける時間ms );
32 public void 進行描画する( デバイスリソース dr, FDK.メディア.画像 フェードアウトに使うタイル画像 )
34 int タイル枚数X = (int) ( dr.設計画面サイズdpx.Width / フェードアウトに使うタイル画像.サイズdpx.Width ) + 1; // 剰余は切り捨てられるので +1 。
35 int タイル枚数Y = (int) ( dr.設計画面サイズdpx.Height / フェードアウトに使うタイル画像.サイズdpx.Height ) + 1;
37 for( int x = 0; x < タイル枚数X; x++ )
39 for( int y = 0; y < タイル枚数Y; y++ )
41 フェードアウトに使うタイル画像?.描画する(
43 x * フェードアウトに使うタイル画像.サイズdpx.Width,
44 y * フェードアウトに使うタイル画像.サイズdpx.Height,
45 this.透明度カウンタ.現在値の割合 );
50 protected float 総フェード時間sec = 1.0f;
51 protected readonly FDK.カウンタ.単純増加後不変カウンタ 透明度カウンタ = new FDK.カウンタ.単純増加後不変カウンタ();