{
// 画面を見ながら直観的に調整した固定パラメータたち。
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軸回転 ) );
// タイトル文字列画像を表示する。
{
- 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軸回転 ) );
}
}
}
#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 );
// カーソル位置なら拡大する。
#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 );
// カーソル位置なら拡大する。
}
}
- 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 )
{