OSDN Git Service

#39497 DTXファイルから背景画像として動画ファイルを設定すると、演奏開始時にアプリが強制終了する問題を修正。
authoryyagi <yyagi.dtxmania@gmail.com>
Wed, 21 Aug 2019 13:58:20 +0000 (22:58 +0900)
committeryyagi <yyagi.dtxmania@gmail.com>
Wed, 21 Aug 2019 13:58:20 +0000 (22:58 +0900)
diffファイルでは修正がややこしく見えるが、やっていることはtry-catchを追加しただけ。

DTXMania/コード/ステージ/07.演奏/CStage演奏画面共通_描画.cs

index f8413d8..f819152 100644 (file)
@@ -471,29 +471,36 @@ namespace DTXMania
                        {
                                if (bgfilename != null && File.Exists(bgfilename))
                                {
-                                       using (Bitmap originalBackground = new Bitmap(bgfilename))
+                                       try
                                        {
-                                               float W = originalBackground.Width;
-                                               float H = originalBackground.Height;
-
-                                               float mag = 1;
-                                               // VGA補正
-                                               if (W > 0 && H > 0)
+                                               using (Bitmap originalBackground = new Bitmap(bgfilename))
                                                {
-                                                       float mx = SampleFramework.GameWindowSize.Width / W;
-                                                       float my = SampleFramework.GameWindowSize.Height / H;
+                                                       float W = originalBackground.Width;
+                                                       float H = originalBackground.Height;
 
-                                                       mag = Math.Min(mx, my);
-                                               }
+                                                       float mag = 1;
+                                                       // VGA補正
+                                                       if (W > 0 && H > 0)
+                                                       {
+                                                               float mx = SampleFramework.GameWindowSize.Width / W;
+                                                               float my = SampleFramework.GameWindowSize.Height / H;
 
-                                               using (Graphics graphic2 = Graphics.FromImage(bgbitmap))
-                                               {
-                                                       float x = (SampleFramework.GameWindowSize.Width - W * mag) / 2;
-                                                       float y = (SampleFramework.GameWindowSize.Height - H * mag) / 2;
-                                                       graphic2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
-                                                       graphic2.DrawImage(originalBackground, x, y, W * mag, H * mag);
+                                                               mag = Math.Min(mx, my);
+                                                       }
+
+                                                       using (Graphics graphic2 = Graphics.FromImage(bgbitmap))
+                                                       {
+                                                               float x = (SampleFramework.GameWindowSize.Width - W * mag) / 2;
+                                                               float y = (SampleFramework.GameWindowSize.Height - H * mag) / 2;
+                                                               graphic2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
+                                                               graphic2.DrawImage(originalBackground, x, y, W * mag, H * mag);
+                                                       }
                                                }
                                        }
+                                       catch (ArgumentException)
+                                       {
+                                               Trace.TraceError($"t背景テクスチャの生成(): 指定されたファイルを静止画として開けませんでした。({Path.GetFileName(bgfilename)})");
+                                       }
                                }
 
                                using (Bitmap image = new Bitmap(CSkin.Path(@"Graphics\ScreenPlayDrums-background-center.png")))