SophiaFramework UNIVERSE 5.3 |
SophiaFramework UNIVERSE には、色を扱うクラスが用意されています。 これらのクラスを使用すると、RGB で表現される色の RGB 値をまとめて扱うことができます。 また、色の計算や、明るくしたり暗くしたりといった演算を簡単にできます。
色の演算に関するクラスとして、 単純な RGB 値で色を表すクラス (SFXRGBColor)、 立体的な矩形を描画するときに使う複数の色をまとめたクラス (SFXBevelColor)、 図形の枠と影の色をまとめたクラス (SFXFrameColor) が利用可能です。
注意 | |
---|---|
SophiaFramework UNIVERSE では、RGBVAL 型ではなく、SFXRGBColor クラスを使用して「色」を表します。 |
参照: BREW API RGBVAL
R値(赤)、G値(緑)、B値(青)、α値 は 0 〜 255 (0x00 〜 0xFF) の範囲で設定します。
注意 | |
---|---|
BREW 1.x 〜 4.0 では、α値を設定しても無効です。BREW では、α値はサポートされていません。 |
例 12.36. 色の定義
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor lightgrey(0xEE, 0xEE, 0xEE, 0x00); // 薄い灰色 SFXRGBColor white(0xFF, 0xFF, 0xFF, 0x00); // 白色 SFXRGBColor grey(0xDD, 0xDD, 0xDD, 0x00); // 灰色 SFXRGBColor blue(0x00, 0x00, 0xFF, 0x00); // 青色 SFXRGBColor black(0x00, 0x00, 0x00, 0x00); // 黒色
例 12.37. 矩形領域の塗り潰し
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor lightgrey(0xEE, 0xEE, 0xEE, 0x00); // 薄い灰色 SFXRGBColor grey(0xDD, 0xDD, 0xDD, 0x00); // 薄い灰色 // 画面領域の定義 : SFXGraphics::GetDeviceSize() によって画面サイズを取得する SFXRectangle screen(0, 0, SFXGraphics::GetDeviceSize()); // 矩形領域の定義 : 画面領域を上下左右 50 ピクセルずつ縮小した領域 SFXRectangle rectangle(SFXRectangle(0,0,SFXGraphics::GetDeviceSize()).Deflate(50, 50)); // 画面領域を塗り潰す : 第1引数に画面領域、第2引数に薄い灰色を指定する graphics->FillRectangle(screen, lightgrey); // 矩形領域をRGBカラーで塗り潰す : 第1引数に矩形領域、第2引数に灰色を指定する graphics->FillRectangle(rectangle, grey);
例 12.38. 色の取得
SFXRGBColor red(0x00, 0x00, 0xFF, 0x00); // 赤色 UInt08 r = red.GetRed(); // r = 0xFF UInt08 g = red.GetGreen(); // g = 0x00 UInt08 b = red.GetBlue(); // b = 0x00 UInt08 a = red.GetAlpha(); // a = 0x00
例 12.39. 色の設定
// 色の定義 SFXRGBColor color; // R値、G値、B値、α値を設定する color.Set(0x00, 0xFF, 0x99, 0x00); // R値、G値、B値を 0x33、α値を 0x00 に設定する color.Set(0x33, 0x00); // R値、G値、B値、α値を個別に設定する 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.AddRGB(0x33); // R, G, B の値をそれぞれ 0x33 を加算する(色は明るくなる) // ※加算した結果、0xFF を超える場合、演算結果は 0xFF となる // 減算 color.SubBlue(0x60); // color の B値 = 0x00 color.SubRGB(0x33); // R値、G値、B値をそれぞれ 0x33 を減算する(色は暗くなる) // ※減算した結果、0x00 を下回る場合、演算結果は 0x00 となる
「影つきの枠(フレーム)」は、影と枠から構成され、 これらの色は RGB 色で設定します。
「影つきの枠(フレーム)」では、 下辺と右辺は影の色、 領域から影を除いた矩形領域の境界線は枠の色で描画されます。
例 12.41. フレームカラーの定義と設定
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor blue(0x00, 0x00, 0xFF, 0x00); // 青色 SFXRGBColor black(0x00, 0x00, 0x00, 0x00); // 黒色 // フレームカラーの定義 SFXFrameColor frame; // 枠の色を青色に設定する frame.SetFrame(blue); // 影の色を黒色に設定する frame.SetShadow(black);
例 12.42. 「影つきの枠」の描画
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor lightgrey(0xEE, 0xEE, 0xEE, 0x00); // 薄い灰色 SFXRGBColor blue(0x00, 0x00, 0xFF, 0x00); // 青色 SFXRGBColor black(0x00, 0x00, 0x00, 0x00); // 黒色 // フレームカラーの定義 SFXFrameColor frame; // フレームカラーの設定 // 枠の色を青色に設定する frame.SetFrame(blue); // 影の色を黒色に設定する frame.SetShadow(black); // 画面領域の定義 : SFXGraphics::GetDeviceSize() によって画面サイズを取得する SFXRectangle screen(0, 0, SFXGraphics::GetDeviceSize()); // 矩形領域の定義 : 画面領域を上下左右 50 ピクセルずつ縮小した領域 SFXRectangle rectangle(SFXRectangle(0,0,SFXGraphics::GetDeviceSize()).Deflate(50, 50)); // 画面領域を塗り潰す : 第1引数に画面領域、第2引数に薄い灰色を指定する graphics->FillRectangle(screen, lightgrey); // 矩形領域をフレームカラーで描画する : 第1引数に矩形領域、第2引数にフレームカラーを指定する graphics->DrawFrame(rectangle, frame);
「立体的な矩形(ベベル)」の色(べベルカラー)は、ライトカラー、ベースカラー、ダークカラーから構成され、 これらの各部分の色は RGB 色で設定します。
「立体的な矩形(ベベル)」では、 矩形の左下端を除く左辺と右上端を除く上辺はライトカラー、 矩形の左下端を除く下辺と右上端を除く右辺はダークカラー、 矩形の内部と左下端と右上端はベースカラーで描画されます。
例 12.44. 色の定義と設定
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor white(0xFF, 0xFF, 0xFF, 0x00); // 白色 SFXRGBColor grey(0xDD, 0xDD, 0xDD, 0x00); // 灰色 SFXRGBColor black(0x00, 0x00, 0x00, 0x00); // 黒色 // ベベルカラーの定義 SFXBevelColor bevel; // ベベルカラーの設定 bevel.SetLight(white); // ライトカラーを設定する : 白色 bevel.SetBase(grey); // ベースカラーを設定する : 灰色 bevel.SetDark(black); // ダークカラーを設定する : 黒色
例 12.45. 立体的な矩形(べベル)の描画
// 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor lightgrey(0xEE, 0xEE, 0xEE, 0x00); // 薄い灰色 SFXRGBColor white(0xFF, 0xFF, 0xFF, 0x00); // 白色 SFXRGBColor grey(0xDD, 0xDD, 0xDD, 0x00); // 灰色 SFXRGBColor black(0x00, 0x00, 0x00, 0x00); // 黒色 // ベベルカラーの定義 SFXBevelColor bevel; // ベベルカラーの設定 bevel.SetLight(white); // ライトカラーを設定する : 白色 bevel.SetBase(grey); // ベースカラーを設定する : 灰色 bevel.SetDark(black); // ダークカラーを設定する : 黒色 // 画面領域の定義 : SFXGraphics::GetDeviceSize() によって画面サイズを取得する SFXRectangle screen(0, 0, SFXGraphics::GetDeviceSize()); // 矩形領域の定義 : 画面領域を上下左右 50 ピクセルずつ縮小した領域 SFXRectangle rectangle(SFXRectangle(0,0,SFXGraphics::GetDeviceSize()).Deflate(50, 50)); // 画面領域を塗り潰す : 第1引数に画面領域、第2引数に薄い灰色を指定する graphics->FillRectangle(screen, lightgrey); // 矩形領域をベベルカラーで塗り潰す : 第1引数に矩形領域、第2引数にベベルカラーを指定する graphics->FillBevelRectangle(rectangle, bevel);
例 12.46. 色の演算
bevel.AddBaseRed(0x66); // ベースカラーのR値に 0x66 を加算する bevel.AddBaseRGB(0x66); // ベースカラーのRGB値に 0x66 を加算する(色は明るくなる) bevel.AddLightBlue(0x66); // ライトカラーのB値に 0x66 を加算する bevel.AddRed(0x66); // ライトカラー、ベースカラー、ダークカラーのR値に 0x66 を加算する bevel.AddRGB(0x66); // ライトカラー、ベースカラー、ダークカラーのRGB値に 0x66 を加算する(色は明るくなる)
図形やテキストを描画するとき、色を指定する方法は2種類あります。
例 12.47. 描画関数の引数で指定する方法
// グラフィックスオブジェクトの取得 SFXGraphicsPtr graphics = SFXGraphics::GetInstance(); // 色の定義 : 左からR値、G値、B値、α値 SFXRGBColor color(0x00, 0xFF, 0x00, 0x00); // テキストを color 色で描画する graphics->DrawSingleText("text", SFXGrid(10, 20), color);
例 12.48. SetForeColor 関数を使用して指定する方法
SFXGraphicsPtr graphics = SFXGraphics::GetInstance(); SFXRGBColor green(0x00, 0xFF, 0x00, 0x00); // 緑色 // 前景色を緑色に設定する graphics->SetForeColor(green); // テキストを緑色で描画する graphics->DrawSingleText("text", SFXGrid(10, 20));
注意 | |
---|---|
引数で色を指定した場合、SFXGraphics::DrawSingleText 関数の内部で SFXGraphics::SetForeColor 関数が呼び出されます。 SFXGraphics::DrawSingleText 関数を複数回呼び出す場合は後者の方法を使います。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |