SophiaFramework UNIVERSE 5.3 |
例 12.49. リスト表示
// 矩形領域の定義 SFXRectangle rectangle(30, 50, 120, 150); // グラフィックスオブジェクトの取得 SFXGraphicsPtr graphics = SFXGraphics::GetInstance(); // 外枠を描画する : 黒色を指定する graphics->DrawRectangle(rectangle, SFXRGBColor(0x00, 0x00, 0x00, 0x00)); // 外枠を上下左右 1 ずつ縮小する rectangle.Deflate(1, 1); // 高さをフォントの高さに設定する rectangle.SetHeight(graphics->GetFontHeight()); // リストに表示するテキスト SFXWideString stringArray[] = {"C++", "java", "perl", "ruby", "python", "haskell"}; SInt16 i; for (i = 0; i < lengthof(stringArray); ++i) { if (i % 2 == 0) { // 奇数行のとき // 塗り潰した矩形を描画する graphics->FillRectangle(rectangle, SFXRGBColor(0xFF, 0xAA, 0xBB, 0x00)); } else { // 偶数行のとき // 塗り潰した矩形を描画する graphics->FillRectangle(rectangle, SFXRGBColor(0xDD, 0xDD, 0xFF, 0x00)); } // テキストを描画する : 場所を SFXRectangle で指定する graphics->DrawSingleText(stringArray[i], rectangle, SFXRGBColor(0x00, 0x00, 0x00, 0x00)); // 矩形を下に移動する rectangle.AddY(rectangle.GetHeight() + 2); }
複数の描画 | |
---|---|
矩形を移動する関数 (SFXRectangle::AddY 関数) を for 文の中で使うことで、 複数の同じサイズの矩形の描画をシンプルに記述できます。 |
例 12.50. レスポンダの配置
SFXRectangle rectangle(20, 40, 150, 0); // レスポンダ関連のエラー処理は省略 // 矩形の高さをフォントの高さ + 4 に設定する rectangle.SetHeight(SFXGraphics::GetFontHeight(AEE_FONT_NORMAL) + 4); // ボタンコントロール1を作成し配置する _button1 = SFZTextButtonControl::NewInstance(); // ボタンコントロール1の親レスポンダを設定する _button1->SetParent(GetThis()); // ボタンコントロール1のラベルを "Text Button 1" に設定する _button1->SetText("Text Button 1"); // ボタンコントロール1の実領域を設定する _button1->SetRealBound(rectangle); // ボタンコントロール1の状態を「可視+活性+操作可能+フォーカス」にまとめて設定する _button1->SetState(true, true, true, true); // 矩形を右に 30 ピクセル、下に 40 ピクセル移動する rectangle.Offset(30, 40); // テキストラベルコントロールを作成し配置する _singleTextLabel = SFZSingleTextLabelControl::NewInstance(); // テキストラベルコントロールの親レスポンダを設定する _singleTextLabel->SetParent(GetThis()); // テキストラベルコントロールのラベルを "Text Label" に設定する _singleTextLabel->SetText("Text Label"); // テキストラベルコントロールの実領域を設定する _singleTextLabel->SetRealBound(rectangle); // テキストラベルコントロールの状態を「可視+活性+操作不可+非フォーカス」にまとめて設定する _singleTextLabel->SetState(true, true, false, false); // 矩形を左に 30 ピクセル、下に 40 ピクセル移動する rectangle.Offset(-30, 40); // ボタンコントロール2を作成し配置する _button2 = SFZTextButtonControl::NewInstance(); // ボタンコントロール2の親レスポンダを設定する _button2->SetParent(GetThis()); // ボタンコントロール2のラベルを "Text Button 2" に設定する _button2->SetText("Text Button 2"); // ボタンコントロール2の実領域を設定する _button2->SetRealBound(rectangle); // ボタンコントロール2の状態を「可視+活性+操作可能+非フォーカス」にまとめて設定する _button2->SetState(true, true, true, false); // 矩形の幅を 30 ピクセル広げ、Y 座標の値に 60 ピクセルを加算し、Y 軸方向に上下 5 ピクセルそれぞれ広げる rectangle.AddWidth(30).AddY(60).Inflate(0, 5); // エディットボックスコントロールを作成し配置する _singleEditBox = SFZSingleEditBoxControl::NewInstance(); // エディットボックスコントロールの親レスポンダを設定する _singleEditBox->SetParent(GetThis()); // エディットボックスコントロールの初期値を "Edit Box" に設定する _singleEditBox->SetText("Edit Box"); // エディットボックスコントロールの実領域を設定する _singleEditBox->SetRealBound(rectangle); // エディットボックスコントロールの状態を「可視+活性+操作可能+非フォーカス」にまとめて設定する _singleEditBox->SetState(true, true, true, false);
注意 | |
---|---|
レスポンダの位置や移動、サイズ変更は SFXRectangle クラスのメンバ関数を使用して指定します。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |