前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1

12.3. 色

12.3.1. RGB 色

表 12.7. カラークラス

クラス名 解説
SFXRGBColor 色を RGB 値で管理するのクラスです。

R ( 赤 )、G ( 緑 )、B ( 青 )、alpha ( アルファ値 ) の値を 0 〜 255 の範囲で設定します。

例 12.36. 色の定義

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

例 12.37. 塗りつぶし

// 長方形
SFXRectangle rectangle(30, 30, 40, 40);

// 長方形を塗りつぶす ( 第 2 引数は SFXRGBColor 型 )
graphics->FillRectangle(rectangle, color);

// 青色を指定して長方形を塗りつぶす
// SFXRGBColor( 0x00, 0x00, 0xFF, 0x00 ) = 青色
graphics->FillRectangle(SFXRectangle(90, 30, 40, 40),
                           SFXRGBColor(0x00, 0x00, 0xFF, 0x00));

図 12.11. 実行結果

実行結果

例 12.38. 色の取得

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

例 12.39. 色の設定

// 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);

例 12.40. 色の演算

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 を減算する

12.3.2. 影つき枠の色

表 12.8. 影つき枠の色管理クラス

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

枠 ( frame ) の色と影 ( shadow ) の色を RGB 色で設定します。

例 12.41. 色の設定

SFXFrameColor frameColor;

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

例 12.42. 「影つきの枠」の描画

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

図 12.12. 実行結果

実行結果

例 12.43. 色の演算

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

12.3.3. 立体的な長方形の色

表 12.9. 立体的な長方形の色管理クラス

クラス名 解説
SFXBevelColor 立体的な長方形 ( べベル ) を管理するクラスです。

ライト、ベース、ダークの各部分の色を RGB 色で設定します。

例 12.44. 色の設定

SFXBevelColor bevelColor;

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

例 12.45. べベルの描画

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

図 12.13. 実行結果

実行結果

例 12.46. 色の演算

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

12.3.4. SFXGraphics インスタンスの色設定

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

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

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

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

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

例 12.48. SetForeColor 関数を使って指定する方法

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

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

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

// 文字列を color 色で描画する
graphics->DrawText("text", SFXGrid(10, 20));
[Note] 注意

引数で色を指定した場合、DrawText() 関数の内部で SetForeColor() 関数が呼び出されます。DrawText() 関数を複数回呼び出す場合は後者を使います。