OSDN Git Service

DTXManiaソリューション、DTXManiaプロジェクト、DTXCreatorプロジェクト、FDKプロジェクトについて英語化。
[dtxmania/dtxmania.git] / DTXMania / コード / ステージ / 05.選曲 / CActSelectPreimageパネル.cs
diff --git a/DTXMania/コード/ステージ/05.選曲/CActSelectPreimageパネル.cs b/DTXMania/コード/ステージ/05.選曲/CActSelectPreimageパネル.cs
new file mode 100644 (file)
index 0000000..05faff9
--- /dev/null
@@ -0,0 +1,584 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.IO;
+using System.Diagnostics;
+using SharpDX;
+using SharpDX.Direct3D9;
+using FDK;
+
+using Rectangle = System.Drawing.Rectangle;
+
+namespace DTXMania
+{
+       internal class CActSelectPreimageパネル : CActivity
+       {
+               // メソッド
+
+               public CActSelectPreimageパネル()
+               {
+                       base.b活性化してない = true;
+               }
+               public void t選択曲が変更された()
+               {
+                       this.ct遅延表示 = new CCounter(-CDTXMania.Instance.ConfigIni.nPreImageWeightMs, 100, 1, CDTXMania.Instance.Timer);
+                       this.b新しいプレビューファイルを読み込んだ = false;
+               }
+
+               public bool bIsPlayingPremovie    // #27060
+               {
+                       get
+                       {
+                               return (this.rAVI != null);
+                       }
+               }
+               public CAct演奏AVI actAVI
+               {
+                       get;
+                       set;
+               }
+
+               // CActivity 実装
+
+               public override void On活性化()
+               {
+                       this.n本体X = (int)(8 * Scale.X);
+                       this.n本体Y = (int)(0x39 * Scale.Y);
+                       this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像;
+                       this.str現在のファイル名 = "";
+                       this.b新しいプレビューファイルを読み込んだ = false;
+                       base.On活性化();
+
+                       this.actAVI.bIsPreviewMovie = true;
+                       this.actAVI.On活性化();
+               }
+               public override void On非活性化()
+               {
+                       this.ct登場アニメ用 = null;
+                       this.ct遅延表示 = null;
+                       if (this.rAVI != null)
+                       {
+                               this.rAVI.Dispose();
+                               this.rAVI = null;
+                       }
+                       base.On非活性化();
+                       this.actAVI.On非活性化();
+               }
+               public override void OnManagedリソースの作成()
+               {
+                       if (!base.b活性化してない)
+                       {
+                               this.txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage panel.png"), false);
+                               this.txセンサ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect sensor.png"), false);
+                               this.txセンサ光 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect sensor light.png"), false);
+                               this.txプレビュー画像 = null;
+                               this.txプレビュー画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"), false);
+                               //this.sfAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.Instance.app.Device, 0xcc, 0x10d, CDTXMania.Instance.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.SystemMemory );
+                               //this.sfAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.Instance.app.Device, 192, 269, CDTXMania.Instance.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Default );
+                               //this.nAVI再生開始時刻 = -1;
+                               //this.n前回描画したフレーム番号 = -1;
+                               //this.b動画フレームを作成した = false;
+                               //this.pAVIBmp = IntPtr.Zero;
+                               this.tプレビュー画像_動画の変更();
+                               base.OnManagedリソースの作成();
+
+                               this.actAVI.OnManagedリソースの作成();
+                       }
+               }
+               public override void OnManagedリソースの解放()
+               {
+                       if (!base.b活性化してない)
+                       {
+                               TextureFactory.tテクスチャの解放(ref this.txパネル本体);
+                               TextureFactory.tテクスチャの解放(ref this.txセンサ);
+                               TextureFactory.tテクスチャの解放(ref this.txセンサ光);
+                               TextureFactory.tテクスチャの解放(ref this.txプレビュー画像);
+                               TextureFactory.tテクスチャの解放(ref this.txプレビュー画像がないときの画像);
+                               //if( this.sfAVI画像 != null )
+                               //{
+                               //    this.sfAVI画像.Dispose();
+                               //    this.sfAVI画像 = null;
+                               //}
+                               base.OnManagedリソースの解放();
+                               this.actAVI.OnManagedリソースの解放();
+                       }
+               }
+               public override int On進行描画()
+               {
+                       if (!base.b活性化してない)
+                       {
+                               if (base.b初めての進行描画)
+                               {
+                                       this.ct登場アニメ用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);
+                                       this.ctセンサ光 = new CCounter(0, 100, 30, CDTXMania.Instance.Timer);
+                                       this.ctセンサ光.n現在の値 = 70;
+                                       base.b初めての進行描画 = false;
+                               }
+                               this.ct登場アニメ用.t進行();
+                               this.ctセンサ光.t進行Loop();
+                               if ((!CDTXMania.Instance.stage選曲.bスクロール中 && (this.ct遅延表示 != null)) && this.ct遅延表示.b進行中)
+                               {
+                                       this.ct遅延表示.t進行();
+                                       if ((this.ct遅延表示.n現在の値 >= 0) && this.b新しいプレビューファイルをまだ読み込んでいない)
+                                       {
+                                               this.tプレビュー画像_動画の変更();
+                                               CDTXMania.Instance.Timer.t更新();
+                                               this.ct遅延表示.n現在の経過時間ms = CDTXMania.Instance.Timer.n現在時刻;
+                                               this.b新しいプレビューファイルを読み込んだ = true;
+                                       }
+                                       else if (this.ct遅延表示.b終了値に達した && this.ct遅延表示.b進行中)
+                                       {
+                                               this.ct遅延表示.t停止();
+                                       }
+                               }
+                               //else if( ( ( this.avi != null ) && ( this.sfAVI画像 != null ) ) && ( this.nAVI再生開始時刻 != -1 ) )
+                               //{
+                               //    int time = (int) ( ( CDTXMania.Instance.Timer.n現在時刻 - this.nAVI再生開始時刻 ) * ( ( (double) CDTXMania.Instance.ConfigIni.n演奏速度 ) / 20.0 ) );
+                               //    int frameNoFromTime = this.avi.GetFrameNoFromTime( time );
+                               //    if( frameNoFromTime >= this.avi.GetMaxFrameCount() )
+                               //    {
+                               //        this.nAVI再生開始時刻 = CDTXMania.Instance.Timer.n現在時刻;
+                               //    }
+                               //    else if( ( this.n前回描画したフレーム番号 != frameNoFromTime ) && !this.b動画フレームを作成した )
+                               //    {
+                               //        this.b動画フレームを作成した = true;
+                               //        this.n前回描画したフレーム番号 = frameNoFromTime;
+                               //        this.pAVIBmp = this.avi.GetFramePtr( frameNoFromTime );
+                               //    }
+                               //}
+                               this.t描画処理_パネル本体();
+                               this.t描画処理_ジャンル文字列();
+                               this.t描画処理_プレビュー画像();
+                               this.t描画処理_センサ光();
+                               this.t描画処理_センサ本体();
+
+                       }
+                       return 0;
+               }
+
+
+               // その他
+
+               #region [ private ]
+               //-----------------
+               //private CAvi avi;
+               private CDTX.CAVI rAVI;
+
+               //private bool b動画フレームを作成した;
+               private CCounter ctセンサ光;
+               private CCounter ct遅延表示;
+               private CCounter ct登場アニメ用;
+               //private long nAVI再生開始時刻;
+               //private int n前回描画したフレーム番号;
+               private int n本体X;
+               private int n本体Y;
+               //private IntPtr pAVIBmp;
+               private readonly Rectangle rcセンサ光 = new Rectangle((int)(0 * Scale.X), (int)(0xc0 * Scale.Y), (int)(0x40 * Scale.X), (int)(0x40 * Scale.Y));
+               private readonly Rectangle rcセンサ本体下半分 = new Rectangle((int)(0x40 * Scale.X), (int)(0 * Scale.Y), (int)(0x40 * Scale.X), (int)(0x80 * Scale.Y));
+               private readonly Rectangle rcセンサ本体上半分 = new Rectangle((int)(0 * Scale.X), (int)(0 * Scale.Y), (int)(0x40 * Scale.X), (int)(0x80 * Scale.Y));
+               private CTexture r表示するプレビュー画像;
+               //private Surface sfAVI画像;
+               private string str現在のファイル名;
+               private CTexture txセンサ;
+               private CTexture txセンサ光;
+               private CTexture txパネル本体;
+               private CTexture txプレビュー画像;
+               private CTexture txプレビュー画像がないときの画像;
+               private bool b新しいプレビューファイルを読み込んだ;
+               private bool b新しいプレビューファイルをまだ読み込んでいない
+               {
+                       get
+                       {
+                               return !this.b新しいプレビューファイルを読み込んだ;
+                       }
+                       set
+                       {
+                               this.b新しいプレビューファイルを読み込んだ = !value;
+                       }
+               }
+
+               //private unsafe void tサーフェイスをクリアする( Surface sf )
+               //{
+               //    DataRectangle rectangle = sf.LockRectangle( LockFlags.None );
+               //    DataStream data = rectangle.Data;
+               //    switch( ( rectangle.Pitch / sf.Description.Width ) )
+               //    {
+               //        case 4:
+               //            {
+               //                uint* numPtr = (uint*) data.DataPointer.ToPointer();
+               //                for( int i = 0; i < sf.Description.Height; i++ )
+               //                {
+               //                    for( int j = 0; j < sf.Description.Width; j++ )
+               //                    {
+               //                        ( numPtr + ( i * sf.Description.Width ) )[ j ] = 0;
+               //                    }
+               //                }
+               //                break;
+               //            }
+               //        case 2:
+               //            {
+               //                ushort* numPtr2 = (ushort*) data.DataPointer.ToPointer();
+               //                for( int k = 0; k < sf.Description.Height; k++ )
+               //                {
+               //                    for( int m = 0; m < sf.Description.Width; m++ )
+               //                    {
+               //                        ( numPtr2 + ( k * sf.Description.Width ) )[ m ] = 0;
+               //                    }
+               //                }
+               //                break;
+               //            }
+               //    }
+               //    sf.UnlockRectangle();
+               //}
+               private void tプレビュー画像_動画の変更()
+               {
+                       this.actAVI.Stop();
+                       if (this.rAVI != null)
+                       {
+                               this.rAVI.Dispose();
+                               this.rAVI = null;
+                       }
+                       //this.pAVIBmp = IntPtr.Zero;
+                       //this.nAVI再生開始時刻 = -1;
+                       if (!CDTXMania.Instance.ConfigIni.bStoicMode)
+                       {
+                               if (this.tプレビュー動画の指定があれば構築する())
+                               {
+                                       return;
+                               }
+                               if (this.tプレビュー画像の指定があれば構築する())
+                               {
+                                       return;
+                               }
+                               if (this.t背景画像があればその一部からプレビュー画像を構築する())
+                               {
+                                       return;
+                               }
+                       }
+                       this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像;
+                       this.str現在のファイル名 = "";
+               }
+               private bool tプレビュー画像の指定があれば構築する()
+               {
+                       Cスコア cスコア = CDTXMania.Instance.stage選曲.r現在選択中のスコア;
+                       if ((cスコア == null) || string.IsNullOrEmpty(cスコア.譜面情報.Preimage))
+                       {
+                               return false;
+                       }
+                       string str = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Preimage;
+                       if (!str.Equals(this.str現在のファイル名))
+                       {
+                               TextureFactory.tテクスチャの解放(ref this.txプレビュー画像);
+                               this.str現在のファイル名 = str;
+                               if (!File.Exists(this.str現在のファイル名))
+                               {
+                                       Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { this.str現在のファイル名 });
+                                       return false;
+                               }
+                               this.txプレビュー画像 = TextureFactory.tテクスチャの生成(this.str現在のファイル名, false);
+                               if (this.txプレビュー画像 != null)
+                               {
+                                       this.r表示するプレビュー画像 = this.txプレビュー画像;
+                               }
+                               else
+                               {
+                                       this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像;
+                               }
+                       }
+                       return true;
+               }
+               private bool tプレビュー動画の指定があれば構築する()
+               {
+                       Cスコア cスコア = CDTXMania.Instance.stage選曲.r現在選択中のスコア;
+                       if ((CDTXMania.Instance.ConfigIni.bAVI && (cスコア != null)) && !string.IsNullOrEmpty(cスコア.譜面情報.Premovie))
+                       {
+                               string filename = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Premovie;
+                               if (filename.Equals(this.str現在のファイル名))
+                               {
+                                       return true;
+                               }
+                               if (this.rAVI != null)
+                               {
+                                       this.rAVI.Dispose();
+                                       this.rAVI = null;
+                               }
+                               this.str現在のファイル名 = filename;
+                               if (!File.Exists(this.str現在のファイル名))
+                               {
+                                       Trace.TraceWarning("ファイルが存在しません。({0})", Path.GetFileName(this.str現在のファイル名));
+                                       return false;
+                               }
+                               try
+                               {
+                                       this.rAVI = new CDTX.CAVI(00, this.str現在のファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);
+                                       this.rAVI.OnDeviceCreated();
+                                       this.actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);
+                               }
+                               catch (Exception e)
+                               {
+                                       Trace.TraceError("動画の生成に失敗しました。({0})", Path.GetFileName(filename));
+                                       Trace.TraceError("例外メッセージ:{0}", e.Message);
+                                       Trace.TraceError("  スタックトレース:{0}", e.StackTrace);
+                                       this.rAVI = null;
+                               }
+                       }
+                       return false;
+               }
+               private bool t背景画像があればその一部からプレビュー画像を構築する()
+               {
+                       Cスコア cスコア = CDTXMania.Instance.stage選曲.r現在選択中のスコア;
+                       if ((cスコア == null) || string.IsNullOrEmpty(cスコア.譜面情報.Backgound))
+                       {
+                               return false;
+                       }
+                       string path = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Backgound;
+                       if (!path.Equals(this.str現在のファイル名))
+                       {
+                               if (!File.Exists(path))
+                               {
+                                       Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });
+                                       return false;
+                               }
+                               TextureFactory.tテクスチャの解放(ref this.txプレビュー画像);
+                               this.str現在のファイル名 = path;
+                               Bitmap image = null;
+                               Bitmap bitmap2 = null;
+                               Bitmap bitmap3 = null;
+                               try
+                               {
+                                       image = new Bitmap(this.str現在のファイル名);
+                                       bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height);
+                                       Graphics graphics = Graphics.FromImage(bitmap2);
+                                       int x = 0;
+                                       for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)
+                                       {
+                                               for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)
+                                               {
+                                                       graphics.DrawImage(image, x, i, image.Width, image.Height);
+                                               }
+                                       }
+                                       graphics.Dispose();
+                                       bitmap3 = new Bitmap(0xcc, 0x10d);
+                                       graphics = Graphics.FromImage(bitmap3);
+                                       graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);
+                                       graphics.Dispose();
+                                       this.txプレビュー画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);
+                                       this.r表示するプレビュー画像 = this.txプレビュー画像;
+                               }
+                               catch
+                               {
+                                       Trace.TraceError("背景画像の読み込みに失敗しました。({0})", new object[] { this.str現在のファイル名 });
+                                       this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像;
+                                       return false;
+                               }
+                               finally
+                               {
+                                       if (image != null)
+                                       {
+                                               image.Dispose();
+                                       }
+                                       if (bitmap2 != null)
+                                       {
+                                               bitmap2.Dispose();
+                                       }
+                                       if (bitmap3 != null)
+                                       {
+                                               bitmap3.Dispose();
+                                       }
+                               }
+                       }
+                       return true;
+               }
+               private void t描画処理_ジャンル文字列()
+               {
+                       C曲リストノード c曲リストノード = CDTXMania.Instance.stage選曲.r現在選択中の曲;
+                       Cスコア cスコア = CDTXMania.Instance.stage選曲.r現在選択中のスコア;
+                       if ((c曲リストノード != null) && (cスコア != null))
+                       {
+                               string str = "";
+                               switch (c曲リストノード.eノード種別)
+                               {
+                                       case C曲リストノード.Eノード種別.SCORE:
+                                               if ((c曲リストノード.strジャンル == null) || (c曲リストノード.strジャンル.Length <= 0))
+                                               {
+                                                       if ((cスコア.譜面情報.ジャンル != null) && (cスコア.譜面情報.ジャンル.Length > 0))
+                                                       {
+                                                               str = cスコア.譜面情報.ジャンル;
+                                                       }
+#if false  // #32644 2013.12.21 yyagi "Unknown"なジャンル表示を削除。DTX/BMSなどの種別表示もしない。
+                                                       else
+                                                       {
+                                                               switch( cスコア.譜面情報.曲種別 )
+                                                               {
+                                                                       case CDTX.E種別.DTX:
+                                                                               str = "DTX";
+                                                                               break;
+
+                                                                       case CDTX.E種別.GDA:
+                                                                               str = "GDA";
+                                                                               break;
+
+                                                                       case CDTX.E種別.G2D:
+                                                                               str = "G2D";
+                                                                               break;
+
+                                                                       case CDTX.E種別.BMS:
+                                                                               str = "BMS";
+                                                                               break;
+
+                                                                       case CDTX.E種別.BME:
+                                                                               str = "BME";
+                                                                               break;
+                                                               }
+                                                               str = "Unknown";
+                                                       }
+#endif
+                                                       break;
+                                               }
+                                               str = c曲リストノード.strジャンル;
+                                               break;
+
+                                       case C曲リストノード.Eノード種別.SCORE_MIDI:
+                                               str = "MIDI";
+                                               break;
+
+                                       case C曲リストノード.Eノード種別.BOX:
+                                               str = "MusicBox";
+                                               break;
+
+                                       case C曲リストノード.Eノード種別.BACKBOX:
+                                               str = "BackBox";
+                                               break;
+
+                                       case C曲リストノード.Eノード種別.RANDOM:
+                                               str = "Random";
+                                               break;
+
+                                       default:
+                                               str = "Unknown";
+                                               break;
+                               }
+                               CDTXMania.Instance.act文字コンソール.tPrint(
+                                       this.n本体X + (int)(0x12 * Scale.X),
+                                       this.n本体Y - (int)(1 * Scale.Y),
+                                       C文字コンソール.Eフォント種別.赤細,
+                                       str
+                               );
+                       }
+               }
+               private void t描画処理_センサ光()
+               {
+                       int num = this.ctセンサ光.n現在の値;
+                       if (num < 12)
+                       {
+                               int x = this.n本体X + (int)(0xcc * Scale.X);
+                               int y = this.n本体Y + (int)(0x7b * Scale.Y);
+                               if (this.txセンサ光 != null)
+                               {
+                                       this.txセンサ光.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);
+                                       this.txセンサ光.n透明度 = 0xff;
+                                       this.txセンサ光.t2D描画(
+                                               CDTXMania.Instance.Device,
+                                               x,
+                                               y,
+                                               new Rectangle(
+                                                       (int)((num % 4) * 0x40 * Scale.X),
+                                                       (int)((num / 4) * 0x40 * Scale.Y),
+                                                       (int)(0x40 * Scale.X),
+                                                       (int)(0x40 * Scale.Y)
+                                               )
+                                       );
+                               }
+                       }
+                       else if (num < 0x18)
+                       {
+                               int num4 = num - 11;
+                               double num5 = ((double)num4) / 11.0;
+                               double num6 = 1.0 + (num5 * 0.5);
+                               int num7 = (int)(64.0 * num6);
+                               int num8 = (int)(64.0 * num6);
+                               int x = ((this.n本体X + (int)(0xcc * Scale.X)) + (int)(0x20 * Scale.X)) - ((int)(num7 * Scale.X) / 2);
+                               int y = ((this.n本体Y + (int)(0x7b * Scale.Y)) + (int)(0x20 * Scale.Y)) - ((int)(num8 * Scale.Y) / 2);
+                               if (this.txセンサ光 != null)
+                               {
+                                       this.txセンサ光.vc拡大縮小倍率 = new Vector3((float)num6, (float)num6, 1f);
+                                       this.txセンサ光.n透明度 = (int)(255.0 * (1.0 - num5));
+                                       this.txセンサ光.t2D描画(
+                                               CDTXMania.Instance.Device,
+                                               x,
+                                               y,
+                                               this.rcセンサ光
+                                       );
+                               }
+                       }
+               }
+               private void t描画処理_センサ本体()
+               {
+                       int x = this.n本体X + (int)(0xcd * Scale.X);
+                       int y = this.n本体Y - (int)(4 * Scale.Y);
+                       if (this.txセンサ != null)
+                       {
+                               this.txセンサ.t2D描画(CDTXMania.Instance.Device, x, y, this.rcセンサ本体上半分);
+                               y += (int)(0x80 * Scale.Y);
+                               this.txセンサ.t2D描画(CDTXMania.Instance.Device, x, y, this.rcセンサ本体下半分);
+                       }
+               }
+               private void t描画処理_パネル本体()
+               {
+                       if (this.ct登場アニメ用.b終了値に達した || (this.txパネル本体 != null))
+                       {
+                               this.n本体X = (int)(8 * Scale.X);
+                               this.n本体Y = (int)(0x39 * Scale.Y);
+                       }
+                       else
+                       {
+                               double num = ((double)this.ct登場アニメ用.n現在の値) / 100.0;
+                               double num2 = Math.Cos((1.5 + (0.5 * num)) * Math.PI);
+                               this.n本体X = (int)(8 * Scale.X);
+                               this.n本体Y = (int)(0x39 * Scale.Y) - ((int)(this.txパネル本体.sz画像サイズ.Height * (1.0 - (num2 * num2))));
+                       }
+                       if (this.txパネル本体 != null)
+                       {
+                               this.txパネル本体.t2D描画(CDTXMania.Instance.Device, this.n本体X, this.n本体Y);
+                       }
+               }
+               private unsafe void t描画処理_プレビュー画像()
+               {
+                       if (!CDTXMania.Instance.stage選曲.bスクロール中 && (((this.ct遅延表示 != null) && (this.ct遅延表示.n現在の値 > 0)) && !this.b新しいプレビューファイルをまだ読み込んでいない))
+                       {
+                               int x = this.n本体X + (int)(18 * Scale.X);
+                               int y = this.n本体Y + (int)(16 * Scale.Y);
+
+                               if (this.rAVI != null)
+                               {
+                                       actAVI.t進行描画(x, y, 612, 605);
+                                       return;
+                               }
+
+                               float f = ((float)this.ct遅延表示.n現在の値) / 100f;
+                               float mag = 0.9f + (0.1f * f);
+
+                               #region [ プレビュー画像表示 ]
+                               if (this.r表示するプレビュー画像 != null)
+                               {
+                                       CPreviewMagnifier cmg = new CPreviewMagnifier(CPreviewMagnifier.EPreviewType.MusicSelect);
+                                       cmg.GetMagnifier(this.r表示するプレビュー画像.sz画像サイズ.Width, this.r表示するプレビュー画像.sz画像サイズ.Height, mag, mag);
+
+                                       int width = cmg.width;
+                                       int height = cmg.height;
+                                       this.r表示するプレビュー画像.vc拡大縮小倍率.X = cmg.magX;
+                                       this.r表示するプレビュー画像.vc拡大縮小倍率.Y = cmg.magY;
+
+                                       x += (int)((612 - width * cmg.magX) / 2);
+                                       y += (int)((605 - height * cmg.magY) / 2);
+                                       this.r表示するプレビュー画像.n透明度 = (int)(255f * f);
+                                       this.r表示するプレビュー画像.t2D描画(CDTXMania.Instance.Device, x, y);
+                               }
+                               #endregion
+                       }
+               }
+               //-----------------
+               #endregion
+       }
+}