前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

15.4. グラフィック クラス

SFXGraphics クラスは図形や文字を描画するためのクラスです。GUI フレームワークを使う場合と使わない場合でインスタンスの取得法が異なります。

GUI フレームワークを使う場合

GUI フレームワークを使う場合、ウィンドウなどのレスポンダに描画ハンドラを登録して画面を描画します。

// ウィンドウの宣言

SFMTYPEDEFCLASS(MyWindow)
class MyWindow : public SFRTitleWindow {
    SFMSEALCOPY(MyWindow)
public:
    MyWindow(Void) static_throws;
    virtual ~MyWindow(Void);

    // 描画ハンドラの宣言
    HANDLER_DECLARE_VOIDRENDER(MyWindow, OnRenderContent)
};

// 描画ハンドラの定義(ウィンドウ内に描画)

HANDLER_IMPLEMENT_VOIDRENDER(MyWindow, OnRenderContent, graphics)
{
    // graphics インスタンスはマクロの引数として渡される

    // 水色で塗りつぶす
    // GetContentWorld() はウィンドウの中の描画領域を表す四角形(SFXRectangle)を返す
    // SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) は色を表す(左からR,G,B,アルファ値)。
    graphics->FillRectangle(GetContentWorld(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00));

    // "Hello Window" 文字列表示
    graphics->DrawText("Hello Window", GetContentWorld(),
                       SFXRGBColor(0x00, 0x00, 0x00, 0x00));
    
    // graphics->Update() は呼び出す必要がない
    
    return;
}

GUI フレームワークを使わない場合

GUI フレームワークを使わない場合、SFXGraphics::GetInstance 関数でインスタンスを取得して描画します。

[Caution] 描画後の画面更新

GUI フレームワークを使わない場合、画面の描画後に SFXGraphics::Update 関数を呼び出して画面を更新する必要があります。

Void Draw() {
    // グラフィック インスタンスの取得
    SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

    // 画面を白で塗りつぶす
    // SFXGraphics::GetDeviceRectangle() で画面全体の長方形を取得
    // SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) は色(RGB値)を表す。
    graphics->FillRectangle(SFXGraphics::GetDeviceRectangle(),
        SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00));

    // 画面に "Hello World" 文字列を描画
    graphics->DrawText("Hello World", SFXGraphics::GetDeviceRectangle(),
        SFXRGBColor(0x00, 0x00, 0x00, 0x00));

    // 画面を更新する(必須!)
    graphics->Update();
}

参照:ウィンドウを作る画面に描画する文字列クラス図形クラスカラー