OSDN Git Service

フェードイン・アウトで使用する画像クラスのメソッドを変更。
[strokestylet/CsWin10Desktop3.git] / StrokeStyleT / ステージ / フェードアウト.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Linq;
5 using FDK.メディア;
6
7 namespace SST.ステージ
8 {
9         /// <summary>
10         /// フェードアウト用のタイル画像を表示する。
11         /// </summary>
12         /// <remarks>
13         /// パネル画像(任意)の透明度を徐々に濃くしていくことで、フェードアウトを実現する。
14         /// </remarks>
15         class フェードアウト : FDK.Activity
16         {
17                 public bool 完了した => this.透明度カウンタ.終了値に達した;
18                 public bool 完了していない => !( this.完了した );
19
20                 public フェードアウト( float 総フェード時間sec )
21                 {
22                         Debug.Assert( 0.0f < 総フェード時間sec );
23                         this.総フェード時間sec = 総フェード時間sec;
24                 }
25                 public void 開始する()
26                 {
27                         int 最初の値 = 0;
28                         int 最後の値 = 100;
29                         long 値をひとつ増加させるのにかける時間ms = (long) ( this.総フェード時間sec * 1000f / ( 最後の値 - 最初の値 ) );
30                         this.透明度カウンタ.開始する( 最初の値, 最後の値, 値をひとつ増加させるのにかける時間ms );
31                 }
32                 public void 進行描画する( デバイスリソース dr, FDK.メディア.画像 フェードアウトに使うタイル画像 )
33                 {
34                         int タイル枚数X = (int) ( dr.設計画面サイズdpx.Width / フェードアウトに使うタイル画像.サイズdpx.Width ) + 1;  // 剰余は切り捨てられるので +1 。
35                         int タイル枚数Y = (int) ( dr.設計画面サイズdpx.Height / フェードアウトに使うタイル画像.サイズdpx.Height ) + 1;
36
37                         for( int x = 0; x < タイル枚数X; x++ )
38                         {
39                                 for( int y = 0; y < タイル枚数Y; y++ )
40                                 {
41                                         フェードアウトに使うタイル画像?.描画する(
42                                                 dr,
43                                                 x * フェードアウトに使うタイル画像.サイズdpx.Width,
44                                                 y * フェードアウトに使うタイル画像.サイズdpx.Height,
45                                                 this.透明度カウンタ.現在値の割合 );
46                                 }
47                         }
48                 }
49
50                 protected float 総フェード時間sec = 1.0f;
51                 protected readonly FDK.カウンタ.単純増加後不変カウンタ 透明度カウンタ = new FDK.カウンタ.単純増加後不変カウンタ();
52         }
53 }