OSDN Git Service

サムネイル画像とタイトル画像のサイズと位置を調整。
authorくまかみ工房 <kumakamikoubou@gmail.com>
Fri, 7 Oct 2016 05:20:56 +0000 (14:20 +0900)
committerくまかみ工房 <kumakamikoubou@gmail.com>
Fri, 7 Oct 2016 05:20:56 +0000 (14:20 +0900)
StrokeStyleT/ステージ/選曲/曲パネルビュー.cs
StrokeStyleT/ステージ/選曲/曲パネルビューD2D.cs
StrokeStyleT/曲/MusicNode.cs
StrokeStyleT/曲/Node.cs

index c5f2efe..184fa65 100644 (file)
@@ -235,20 +235,39 @@ namespace SST.ステージ.選曲
                {
                        // 画面を見ながら直観的に調整した固定パラメータたち。
                        const float 見かけの倍率 = 3.0f;
-                       const float パネル全体のY方向移動量dpx = +350f;    // パネル全体を少しだけ上にシフトする。
+                       const float パネル全体のY方向移動量dpx = +250f;    // パネル全体を少しだけ上にシフトする。
                        const float パネル全体のZ方向移動量dpx = +3000f;
                        const float 行間 = 1.1f;
                        const float パネル間X方向角度deg = 19f;
 
+                       // Nullパネル画像を表示する。
+                       {
+                               var 拡大縮小 = SharpDX.Matrix.Scaling( パネルノード.ノードの全体サイズdpx.Width, パネルノード.ノードの全体サイズdpx.Height, 1f )
+                                       * SharpDX.Matrix.Scaling( 見かけの倍率 );
+
+                               var 平行移動 = SharpDX.Matrix.Translation(
+                                       0f,
+                                       パネル全体のY方向移動量dpx + ( 1 - パネル位置.Y ) * ( パネルノード.ノードの全体サイズdpx.Height * 見かけの倍率 * 行間 ),
+                                       パネル全体のZ方向移動量dpx );
+
+                               var Y軸回転 = SharpDX.Matrix.RotationY( SharpDX.MathUtil.DegreesToRadians( ( パネル位置.X - 4 ) * パネル間X方向角度deg ) );
+
+                               this.Nullパネルの画像.進行描画する( dr, ( 拡大縮小 * 平行移動 * Y軸回転 ) );
+                       }
                        if( null != パネルノード )
                        {
                                // ノード画像を表示する。
                                {
-                                       var 拡大縮小 = SharpDX.Matrix.Scaling( パネルノード.ノード画像サイズdpx.Width, パネルノード.ノード画像サイズdpx.Height, 1f ) * SharpDX.Matrix.Scaling( 見かけの倍率 );
-                                       var 平行移動 = SharpDX.Matrix.Translation( 
-                                               0f, 
-                                               パネル全体のY方向移動量dpx + ( 1 - パネル位置.Y ) * ( パネルノード.ノード全体サイズdpx.Height * 見かけの倍率 * 行間 ),
-                                               パネル全体のZ方向移動量dpx );
+                                       var 拡大縮小 = SharpDX.Matrix.Scaling( パネルノード.ノードの画像領域のサイズdpx.Width, パネルノード.ノードの画像領域のサイズdpx.Height, 1f )
+                                                       * SharpDX.Matrix.Scaling( 見かけの倍率 );
+
+                                       var 平行移動 = SharpDX.Matrix.Translation(
+                                               0f,
+                                               パネル全体のY方向移動量dpx
+                                                       + ( 1 - パネル位置.Y ) * ( パネルノード.ノードの全体サイズdpx.Height * 見かけの倍率 * 行間 )
+                                                       + ( パネルノード.ノードのタイトル領域のサイズdpx.Height / 2f ) * 見かけの倍率,
+                                               パネル全体のZ方向移動量dpx + 1f );
+
                                        var Y軸回転 = SharpDX.Matrix.RotationY( SharpDX.MathUtil.DegreesToRadians( ( パネル位置.X - 4 ) * パネル間X方向角度deg ) );
 
                                        パネルノード.ノード画像を描画する( dr, ( 拡大縮小 * 平行移動 * Y軸回転 ) );
@@ -256,28 +275,20 @@ namespace SST.ステージ.選曲
 
                                // タイトル文字列画像を表示する。
                                {
-                                       var 拡大縮小 = SharpDX.Matrix.Scaling( パネルノード.タイトル画像サイズdpx.Width, パネルノード.タイトル画像サイズdpx.Height, 1f ) * SharpDX.Matrix.Scaling( 見かけの倍率 );
-                                       var 平行移動 = SharpDX.Matrix.Translation(
-                                               0f,
-                                               パネル全体のY方向移動量dpx + ( 1 - パネル位置.Y ) * ( パネルノード.ノード全体サイズdpx.Height * 見かけの倍率 * 行間 ) - ( パネルノード.ノード画像サイズdpx.Height * 見かけの倍率 ),
-                                               パネル全体のZ方向移動量dpx );
-                                       var Y軸回転 = SharpDX.Matrix.RotationY( SharpDX.MathUtil.DegreesToRadians( ( パネル位置.X - 4 ) * パネル間X方向角度deg ) );
+                                       float 幅dpx = Math.Min( パネルノード.タイトル画像サイズdpx.Width, パネルノード.ノードのタイトル領域のサイズdpx.Width );     // 左右にはみ出さないよう圧縮
+                                       var 拡大縮小 = SharpDX.Matrix.Scaling( 幅dpx, パネルノード.タイトル画像サイズdpx.Height, 1f )
+                                               * SharpDX.Matrix.Scaling( 見かけの倍率 );
 
-                                       パネルノード.タイトル画像を描画する( dr, ( 拡大縮小 * 平行移動 * Y軸回転 ) );
-                               }
-                       }
-                       else
-                       {
-                               // Nullパネル画像を表示する。
-                               {
-                                       var 拡大縮小 = this.Nullパネルの画像.等倍スケーリング行列 * SharpDX.Matrix.Scaling( 見かけの倍率 );
                                        var 平行移動 = SharpDX.Matrix.Translation(
                                                0f,
-                                               パネル全体のY方向移動量dpx + ( 1 - パネル位置.Y ) * ( パネルノード.ノード全体サイズdpx.Height * 見かけの倍率 * 行間 ),
-                                               パネル全体のZ方向移動量dpx );
+                                               パネル全体のY方向移動量dpx
+                                                       + ( 1 - パネル位置.Y ) * ( パネルノード.ノードの全体サイズdpx.Height * 見かけの倍率 * 行間 )
+                                                       - ( パネルノード.ノードの画像領域のサイズdpx.Height / 2f ) * 見かけの倍率,
+                                               パネル全体のZ方向移動量dpx + 2f );
+
                                        var Y軸回転 = SharpDX.Matrix.RotationY( SharpDX.MathUtil.DegreesToRadians( ( パネル位置.X - 4 ) * パネル間X方向角度deg ) );
 
-                                       this.Nullパネルの画像.進行描画する( dr, ( 拡大縮小 * 平行移動 * Y軸回転 ) );
+                                       パネルノード.タイトル画像を描画する( dr, ( 拡大縮小 * 平行移動 * Y軸回転 ) );
                                }
                        }
                }
index 6d88937..cbbfffe 100644 (file)
@@ -257,8 +257,8 @@ namespace SST.ステージ.選曲
                                #region " 3D変換行列を作成してノード画像を表示する。"
                                //-----------------
                                変換行列3Dpx = SharpDX.Matrix.Scaling(
-                                       x: パネルサイズdpx.画像領域dpx.Width / パネルノード.ノード画像サイズdpx.Width, // ノード画像を設計値サイズに拡大縮小する。
-                                       y: パネルサイズdpx.画像領域dpx.Height / パネルノード.ノード画像サイズdpx.Height,
+                                       x: パネルサイズdpx.画像領域dpx.Width / パネルノード.ノードの画像領域のサイズdpx.Width, // ノード画像を設計値サイズに拡大縮小する。
+                                       y: パネルサイズdpx.画像領域dpx.Height / パネルノード.ノードの画像領域のサイズdpx.Height,
                                        z: 1.0f );
 
                                // カーソル位置なら拡大する。
@@ -275,8 +275,8 @@ namespace SST.ステージ.選曲
                                #region " 3D変換行列を作成してタイトル画像を表示する。"
                                //-----------------
                                変換行列3Dpx = SharpDX.Matrix.Scaling(
-                                       x: ã\83\91ã\83\8dã\83«ã\82µã\82¤ã\82ºdpx.ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fdpx.Width / ã\83\91ã\83\8dã\83«ã\83\8eã\83¼ã\83\89\82¿ã\82¤ã\83\88ã\83«ç\94»å\83\8fサイズdpx.Width,  // タイトル画像を設計値サイズに拡大縮小する。
-                                       y: ã\83\91ã\83\8dã\83«ã\82µã\82¤ã\82ºdpx.ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fdpx.Height / ã\83\91ã\83\8dã\83«ã\83\8eã\83¼ã\83\89\82¿ã\82¤ã\83\88ã\83«ç\94»å\83\8fサイズdpx.Height,
+                                       x: ã\83\91ã\83\8dã\83«ã\82µã\82¤ã\82ºdpx.ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fdpx.Width / ã\83\91ã\83\8dã\83«ã\83\8eã\83¼ã\83\89\83\8eã\83¼ã\83\89ã\81®ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fã\81®サイズdpx.Width,  // タイトル画像を設計値サイズに拡大縮小する。
+                                       y: ã\83\91ã\83\8dã\83«ã\82µã\82¤ã\82ºdpx.ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fdpx.Height / ã\83\91ã\83\8dã\83«ã\83\8eã\83¼ã\83\89\83\8eã\83¼ã\83\89ã\81®ã\82¿ã\82¤ã\83\88ã\83«é \98å\9f\9fã\81®サイズdpx.Height,
                                        z: 1.0f );
 
                                // カーソル位置なら拡大する。
index c9a3c13..d0814f9 100644 (file)
@@ -52,16 +52,7 @@ namespace SST.曲
                }
                public override void ノード画像を描画する( デバイスリソース dr, SharpDX.Matrix ワールド変換行列 )
                {
-                       if( null != this.サムネイル画像 )
-                       {
-                               // (A) 自前のサムネイル画像があるなら、それを表示する。
-                               this.サムネイル画像.進行描画する( dr, ワールド変換行列 );
-                       }
-                       else
-                       {
-                               // (B) サムネイル画像がないなら、既定の曲画像を表示する。
-                               base.ノード画像を描画する( dr, ワールド変換行列 );
-                       }
+                       this.サムネイル画像?.進行描画する( dr, ワールド変換行列 );
                }
 
                protected FDK.メディア.テクスチャ サムネイル画像 = null;
index a248bc2..e91e343 100644 (file)
@@ -66,14 +66,15 @@ namespace SST.曲
                        }
                }
 
-               public SharpDX.Size2F ノード全体サイズdpx => new SharpDX.Size2F( 314f, 220f );
-               public virtual SharpDX.Size2F ノード画像サイズdpx => new SharpDX.Size2F( 314f, 220f-82f );
-               public virtual SharpDX.Size2F タイトル画像サイズdpx => new SharpDX.Size2F( 314f, 82f );
+               public SharpDX.Size2F ノードの全体サイズdpx => new SharpDX.Size2F( 314f, 220f );
+               public virtual SharpDX.Size2F ノードの画像領域のサイズdpx => new SharpDX.Size2F( 314f, 220f-82f );
+               public virtual SharpDX.Size2F ノードのタイトル領域のサイズdpx => new SharpDX.Size2F( 314f, 82f );
+               public SharpDX.Size2F タイトル画像サイズdpx => this.タイトル文画像.サイズdpx;
 
                protected override void On活性化( デバイスリソース dr )
                {
                        // タイトル部の文字画像を作成する。
-                       this.子リスト.Add( this.タイトル文画像 = new 文字列テクスチャ( this.タイトル ) );
+                       this.子リスト.Add( this.タイトル文画像 = new 文字列テクスチャ( this.タイトル, 30f ) );
                }
                protected override void On非活性化( デバイスリソース dr )
                {