/// <summary> /// ウィンドウの画像とサイズを設定する。 /// </summary> /// <param name="画像ファイル">ウィンドウを3x3に9分割したベース画像。</param> /// <param name="セル矩形ファイル">ベース画像を3x3に分割する矩形リストファイル。</param> /// <param name="サイズdpx">ウィンドウのクライアント領域のサイズ[dpx]。ウィンドウの枠部分は含まれない。</param> /// <param name="位置dpx">ウィンドウの表示位置[dpx]。親要素のクライアント領域からの相対座標。</param> public Window(VariablePath 画像ファイル, 矩形リスト セル矩形, Size2F サイズdpx, Vector2?位置dpx = null, VariablePath 押下時画像ファイル = null, VariablePath フォーカス時画像ファイル = null) : base(サイズdpx, 位置dpx) { this.広い部分の描画方法 = 広い部分の描画方法種別.タイル描画; this.セル矩形 = セル矩形; this._左上矩形 = this.セル矩形["LeftTop"].Value; this._上辺矩形 = this.セル矩形["Top"].Value; this._右上矩形 = this.セル矩形["RightTop"].Value; this._左辺矩形 = this.セル矩形["Left"].Value; this._中央矩形 = this.セル矩形["Center"].Value; this._右辺矩形 = this.セル矩形["Right"].Value; this._左下矩形 = this.セル矩形["LeftBottom"].Value; this._下辺矩形 = this.セル矩形["Bottom"].Value; this._右下矩形 = this.セル矩形["RightBottom"].Value; this.マージンdpx = 矩形リスト.Margin変換(this.セル矩形["Margin"].Value); this._最大上枠高さdpx = Math.Max(this._左上矩形.Height, Math.Max(this._上辺矩形.Height, this._右上矩形.Height)); this._最大下枠高さdpx = Math.Max(this._左下矩形.Height, Math.Max(this._下辺矩形.Height, this._右下矩形.Height)); this._最大左枠幅dpx = Math.Max(this._左上矩形.Width, Math.Max(this._左辺矩形.Width, this._左下矩形.Width)); this._最大右枠幅dpx = Math.Max(this._右上矩形.Width, Math.Max(this._右辺矩形.Width, this._右下矩形.Width)); this.子Activityを追加する(this.通常時セル画像 = new 画像(画像ファイル)); if (null != 押下時画像ファイル) { this.子Activityを追加する(this.押下時セル画像 = new 画像(押下時画像ファイル)); // オプション } if (null != フォーカス時画像ファイル) { this.子Activityを追加する(this.フォーカス時セル画像 = new 画像(フォーカス時画像ファイル)); // オプション } this.子Activityを追加する(this.全体画像 = new 描画可能画像(this.サイズdpx_枠込み)); }
public void 矩形リストXmlファイルを読み込むTest() { #region " 矩形リスト01.xml について " // テスト用ファイルがビルド出力ディレクトリにコピーされていること。 Assert.IsTrue(File.Exists(@".\フレームワーク\画像、テクスチャ\フォント、文字列画像\テストファイル\矩形リスト01.xml")); // 読み込めること。失敗したら例外発出。 var recs01 = new 矩形リスト(@".\フレームワーク\画像、テクスチャ\フォント、文字列画像\テストファイル\矩形リスト01.xml"); // 取得できた SubImage の数が正しいこと。 Assert.AreEqual(actual: recs01.文字列to矩形.Count, expected: 3); // Name="4" だけ失敗 → 無視される。 // Name の存在の有無を確認できること。 Assert.IsTrue(recs01.文字列to矩形.ContainsKey("1")); // 存在する Assert.IsTrue(recs01.文字列to矩形.ContainsKey("2nd")); // 存在する Assert.IsTrue(recs01.文字列to矩形.ContainsKey("3")); // 存在する Assert.IsFalse(recs01.文字列to矩形.ContainsKey("4")); // 存在しない // 内容が正しいこと。 Assert.AreEqual(actual: recs01.文字列to矩形["1"].X, expected: 1.0f); Assert.AreEqual(actual: recs01.文字列to矩形["1"].Y, expected: 2.0f); Assert.AreEqual(actual: recs01.文字列to矩形["1"].Width, expected: 3.0f); Assert.AreEqual(actual: recs01.文字列to矩形["1"].Height, expected: 4.0f); Assert.AreEqual(actual: recs01.文字列to矩形["2nd"].X, expected: 5.0f); Assert.AreEqual(actual: recs01.文字列to矩形["2nd"].Y, expected: 6.0f); Assert.AreEqual(actual: recs01.文字列to矩形["2nd"].Width, expected: 7.0f); Assert.AreEqual(actual: recs01.文字列to矩形["2nd"].Height, expected: 8.0f); Assert.AreEqual(actual: recs01.文字列to矩形["3"].X, expected: 9.0f); Assert.AreEqual(actual: recs01.文字列to矩形["3"].Y, expected: 10.0f); Assert.AreEqual(actual: recs01.文字列to矩形["3"].Width, expected: 11.0f); Assert.AreEqual(actual: recs01.文字列to矩形["3"].Height, expected: 12.0f); #endregion #region " 矩形リスト02.xml について " // テスト用ファイルがビルド出力ディレクトリにコピーされていること。 Assert.IsTrue(File.Exists(@".\フレームワーク\画像、テクスチャ\フォント、文字列画像\テストファイル\矩形リスト02.xml")); // 読み込めること。失敗したら例外発出。 var recs02 = new 矩形リスト(@".\フレームワーク\画像、テクスチャ\フォント、文字列画像\テストファイル\矩形リスト02.xml"); // 取得できた SubImage の数が正しいこと。 Assert.AreEqual(actual: recs02.文字列to矩形.Count, expected: 2); // 読み込めるのは Name="A","ごばんめ" だけ。 // Name の存在の有無を確認できること。 Assert.IsTrue(recs02.文字列to矩形.ContainsKey("A")); // 存在する Assert.IsFalse(recs02.文字列to矩形.ContainsKey("B")); // 存在しない Assert.IsFalse(recs02.文字列to矩形.ContainsKey("C")); // 存在しない Assert.IsFalse(recs02.文字列to矩形.ContainsKey("D")); // 存在しない Assert.IsTrue(recs02.文字列to矩形.ContainsKey("ごばんめ")); // 存在する // 内容が正しいこと。 Assert.AreEqual(actual: recs02.文字列to矩形["A"].X, expected: 1.0f); Assert.AreEqual(actual: recs02.文字列to矩形["A"].Y, expected: 2.0f); Assert.AreEqual(actual: recs02.文字列to矩形["A"].Width, expected: 3.0f); Assert.AreEqual(actual: recs02.文字列to矩形["A"].Height, expected: 4.0f); Assert.AreEqual(actual: recs02.文字列to矩形["ごばんめ"].X, expected: 17.0f); Assert.AreEqual(actual: recs02.文字列to矩形["ごばんめ"].Y, expected: 18.0f); Assert.AreEqual(actual: recs02.文字列to矩形["ごばんめ"].Width, expected: 19.0f); Assert.AreEqual(actual: recs02.文字列to矩形["ごばんめ"].Height, expected: 20.0f); #endregion }
public DropDownList( VariablePath 表示欄画像ファイル, 矩形リスト 表示欄セル矩形, VariablePath 選択欄画像ファイル, 矩形リスト 選択欄セル矩形, VariablePath アローボタン通常時画像ファイル, VariablePath アローボタン押下時画像ファイル, VariablePath アローボタンフォーカス時画像ファイル, 矩形リスト アローボタンセル矩形, Size2F サイズdpx, Vector2?位置dpx = null) : base(サイズdpx, 位置dpx) { var 表示欄マージンdpx = 矩形リスト.Margin変換(表示欄セル矩形["Margin"].Value); this.子Activityを追加する(this._表示欄 = new TextArea( 表示欄画像ファイル, 表示欄セル矩形, new Size2F( this.サイズdpx.Width - 表示欄マージンdpx.Left - 表示欄マージンdpx.Right, this.サイズdpx.Height - 表示欄マージンdpx.Top - 表示欄マージンdpx.Bottom), new Vector2( 表示欄マージンdpx.Left, 表示欄マージンdpx.Top)) { テキスト = "", }); this._表示欄.MouseDown += this._表示欄_MouseDown; var 選択欄マージンdpx = 矩形リスト.Margin変換(選択欄セル矩形["Margin"].Value); this.子Activityを追加する(this._選択欄 = new ListView( 選択欄画像ファイル, 選択欄セル矩形, new Size2F( this.サイズdpx.Width - 選択欄マージンdpx.Left - 選択欄マージンdpx.Right, 200f), new Vector2( 選択欄マージンdpx.Left, 選択欄マージンdpx.Top + this._表示欄.クライアント矩形dpx.Height + 表示欄マージンdpx.Bottom)) { 可視 = false, 再選択で選択を解除する = false, ウィンドウの高さを全項目数に合わせる = true, }); this._選択欄.Click += this._選択欄_Click; var ボタンマージンdpx = 矩形リスト.Margin変換(アローボタンセル矩形["Margin"].Value); var ボタン幅dpx = Math.Max(0f, this._表示欄.クライアント矩形dpx.Height - ボタンマージンdpx.Top - ボタンマージンdpx.Bottom); this.子Activityを追加する(this._アローボタン = new Button( "-", アローボタン通常時画像ファイル, アローボタン押下時画像ファイル, アローボタンフォーカス時画像ファイル, アローボタンセル矩形, new Size2F(ボタン幅dpx, ボタン幅dpx), // 正方形 new Vector2( // 右寄せ this._表示欄.位置dpx.X + this._表示欄.クライアント矩形dpx.Width - ボタン幅dpx - ボタンマージンdpx.Right, 表示欄マージンdpx.Top + ボタンマージンdpx.Top))); this._アローボタン.MouseDown += this._アローボタン_MouseDown; this._表示欄と選択欄に合わせてサイズを更新する(); }
/// <summary> /// ボタンの画像とサイズを設定する。 /// ボタン画像はいずれも同じサイズであること。 /// </summary> /// <param name="通常時画像ファイル">ボタンを3x3に9分割したベース画像。</param> /// <param name="押下時画像ファイル">ボタンが押された状態のベース画像。</param> /// <param name="フォーカス時画像ファイル">ボタンの上にマウスカーソルが来るか、フォーカスされている状態のベース画像。</param> /// <param name="幅dpx">ボタンの幅。</param> /// <param name="高さdpx">ボタンの高さ。</param> public Button(string ラベル, VariablePath 通常時画像ファイル, VariablePath 押下時画像ファイル, VariablePath フォーカス時画像ファイル, 矩形リスト セル矩形, Size2F サイズdpx, Vector2?位置dpx = null) : base(通常時画像ファイル, セル矩形, サイズdpx, 位置dpx, 押下時画像ファイル, フォーカス時画像ファイル) { this.広い部分の描画方法 = 広い部分の描画方法種別.拡大縮小描画; this.ラベル = ラベル; this.子Activityを追加する(this._ボタンラベル = new Label( this.ラベル, サイズdpx) { ParagraphAlignment = ParagraphAlignment.Center, TextAlignment = TextAlignment.Center, ヒットチェックあり = false, // ボタンラベルはヒット処理しない }); }