Esempio n. 1
0
        /// <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_枠込み));
        }
Esempio n. 2
0
        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
        }
Esempio n. 3
0
        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._表示欄と選択欄に合わせてサイズを更新する();
        }
Esempio n. 4
0
        /// <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, // ボタンラベルはヒット処理しない
            });
        }