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

15.3. カラー

15.3.1. SFXRGBColor クラス

SFXRGBColor クラスは色を RGB 値で管理するためのクラスです。R (赤)、G (緑)、B (青)、alpha (アルファ値) の値を 0 〜 255 の範囲で指定できます。

定義

// 「色」を表すクラスの定義(左から R、G、B、alpha)
// この色は赤色
SFXRGBColor color(0xFF, 0x00, 0x00, 0x00);

SFXRGBColor クラスの使用

// 長方形

SFXRectangle rectangle(30, 30, 40, 40);

// 長方形を塗りつぶす (第2引数は SFXRGBColor 型)

graphics->FillRectangle(rectangle, color);

// 直接青色を指定して長方形を塗りつぶす

graphics->FillRectangle(SFXRectangle(90, 30, 40, 40),
                        SFXRGBColor(0x00, 0x00, 0xFF, 0x00));

値の取得

UInt08 r = color.GetRed();   // r は 0xFF
UInt08 g = color.GetGreen(); // g は 0x00
UInt08 b = color.GetBlue();  // b は 0x00
UInt08 a = color.GetAlpha(); // a は 0x00

値の設定

// R、G、B、アルファを設定
color.Set(0x00, 0xFF, 0x99, 0x00);

// R、G、B を同じ色 (0x33) に設定。アルファは 0x00

color.Set(0x33, 0x00);

// 個別に設定

color.SetRed(0x00);
color.SetGreen(0xFF);
color.SetBlue(0x99);
color.SetAlpha(0x00);

値の演算

color.Set(0x30, 0xE0, 0x40, 0x00);

// 値の加算

color.AddRed(0x60); // color の R 値は 0x90 になる
color.AddGreen(0x60); // color の G 値は 0xFF になる
                      // (オーバー フローは適切に処理される)
color.Add(0x33, 0x10); // R, G, B に 0x33 を、アルファに 0x10 を加算する

// 値の減算

color.SubBlue(0x60); // color の B 値は 0x00 になる
                     // (アンダー フローは適切に処理される)
color.Sub(0x33, 0x10); // R, G, B に 0x33 を、アルファに 0x10 を減算する

15.3.2. SFXFrameColor クラス

SFXFrameColor クラスは「影つきの枠」の色を管理するクラスです。

枠 (frame) の色と影 (shadow) の色をまとめて管理します。

値の設定

SFXFrameColor frameColor;

frameColor.SetFrame(SFXRGBColor(0xFF, 0x00, 0x00, 0x00));  // 枠の色を設定
frameColor.SetShadow(SFXRGBColor(0x99, 0x99, 0xFF, 0x00)); // 影の色を設定

影つきの枠の描画

// 第1引数に描画する長方形を指定して描画
graphics->DrawFrame(SFXRectangle(20, 20, 40, 50), frameColor);

値の演算

frameColor.AddFrameRed(0x66);   // 枠色の R 値に 0x66 を加算
frameColor.AddFrameRGB(0x66);   // 枠色の各色に 0x66 を加算
frameColor.AddShadowBlue(0x66); // 影色の B 値に 0x66 を加算
frameColor.AddRed(0x66); // 枠色、影色の各 R 値に 0x66 を加算
frameColor.AddRGB(0x66); // 枠色、影色の各 RGB 値に 0x66 を加算

15.3.3. SFXBevelColor クラス

SFXBevelColor クラスはべベルの色を管理するクラスです。立体的な長方形を描画するのに使います。

ライト、ベース、ダークの各部分の色をまとめて管理します。

値の設定

SFXBevelColor bevelColor;

bevelColor.SetBase(SFXRGBColor(0xFF, 0x00, 0x00, 0x00));  // ベース色を設定
bevelColor.SetLight(SFXRGBColor(0x00, 0xFF, 0x00, 0x00)); // ライト色を設定
bevelColor.SetDark(SFXRGBColor(0x00, 0x00, 0xFF, 0x00));  // ダーク色を設定

立体的な長方形の描画

// 第1引数に描画する長方形を指定
graphics->FillBevelRectangle(SFXRectangle(20, 20, 40, 50), bevelColor);

値の演算

bevelColor.AddBaseRed(0x66);   // ベース色の R 値に 0x66 を加算
bevelColor.AddBaseRGB(0x66);   // ベース色の各色に 0x66 を加算
bevelColor.AddLightBlue(0x66); // ライト色の B 値に 0x66 を加算
bevelColor.AddRed(0x66); // ライト、ベース、ダークの各 R 値に 0x66 を加算
bevelColor.AddRGB(0x66); // ライト、ベース、ダークの各 RGB 値に 0x66 を加算

15.3.4. グラフィック・インターフェースの色設定

図形や文字列を描画する際、色を指定する方法は 2 種類あります。

描画関数の引数で指定する方法

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

SFXRGBColor color(0x00, 0xFF, 0x00, 0x00);

// 文字列を color 色で描画
graphics->DrawText("text", SFXGrid(10, 20), color);

専用の関数で指定する方法

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

SFXRGBColor color(0x00, 0xFF, 0x00, 0x00);

// 前景色を color に設定
graphics->SetForeColor(color);

// 文字列を color 色で描画
graphics->DrawText("text", SFXGrid(10, 20));

引数で色を指定した場合、DrawText の内部で SetForeColor を呼び出します。複数回 DrawText を呼び出す場合は後者の方法を使います。