前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

12.2. グリッドとピクセル

SophiaFramework UNIVERSE の座標系には、 画面上の格子点(グリッド)を表すグリッド座標系(SFXGrid)と、 画面上の画素(ピクセル)を表すピクセル座標系(SFXPixel)の 2 種類があります。

表 12.1. 点 ・ 画素を表すクラス

クラス名 BREW の構造体 図形の種類 解説
SFXGrid AEEPoint 格子点(グリッド) グリッド座標を扱うためのクラスです。
SFXPixel AEEPoint 画素(ピクセル) ピクセル座標を扱うためのクラスです。

参照: BREW API AEEPoint

囲碁や将棋に例えると、 「描画する平面」は盤面、 「グリッド」は囲碁の碁石を置く場所、 「ピクセル」は将棋の駒を置く場所です。

図 12.7. グリッドとピクセル

グリッドとピクセル

12.2.1. グリッド

例 12.3. グリッドの定義

// (10, 20) にあるグリッド 
SFXGrid grid(10, 20);

例 12.4. グリッド座標の取得

SInt16 x = grid.GetX();     // x = 10
SInt16 y = grid.GetY();     // y = 20

例 12.5. グリッド座標の設定

grid.Set(15, 25);
grid.SetX(15);
grid.SetY(25);

例 12.6. グリッドの演算

// 点を右に 3 グリッド移動する
grid.AddX(3);

// 点を左に 3 グリッド、下に 3 グリッド移動する
grid.Add(-3, 3);

例 12.7. グリッド指定位置へのテキストの描画

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

// テキストを描画する : SFXGrid(50, 80) は描画位置
// DrawSingleText 関数は SFXPixel クラスではなく SFXGrid クラスを引数にする
graphics->DrawSingleText("drawing", SFXGrid(50, 80)); 

図 12.8. 実行結果[グリッド指定位置へのテキストの描画]

実行結果[グリッド指定位置へのテキストの描画]

例 12.8. グリッド指定位置への画像の描画

SFBShellSmp    shell(SFBShell::GetInstance());
SFBImageSmp    image;

// 画像を描画する : 左上が (50, 80) となる 
// image : SFBImageSmp 型
image = shell->LoadResImage("drawbmp.bar",1001);
image->Draw(SFXGrid(50, 80));

図 12.9. 実行結果[グリッド指定位置への画像の描画]

実行結果[グリッド指定位置への画像の描画]

12.2.2. ピクセル

例 12.9. ピクセルの定義

// (100, 150) にあるピクセル 
SFXPixel pixel(100, 150);

例 12.10. ピクセルの描画

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();
// DrawPixel 関数は SFXGrid インスタンスを引数にしない
graphics->DrawPixel(pixel);

図 12.10. 実行結果[ピクセルの描画]

実行結果[ピクセルの描画]

ピクセル座標の取得

SInt16 x = pixel.GetX();     // x = 10
SInt16 y = pixel.GetY();     // y = 20

例 12.11. ピクセルの設定

pixel.Set(15, 25);
pixel.SetX(15);
pixel.SetY(25);

例 12.12. ピクセルの演算

SFXPixel pixel(10, 20);
SFXGraphicsPtr graphics = SFXGraphics::GetInstance();

SInt16 i;
for (i = 0; i < 50; ++i) {
    // 点を描画する
    graphics->DrawPixel(pixel, SFXRGBColor(0x00, 0x00, 0x00, 0x00));
    
    // 点を右に 3 ピクセル移動する
    pixel.AddX(3);
}

for (i = 0; i < 50; ++i) {
    // 点を描画する
    graphics->DrawPixel(pixel, SFXRGBColor(0x00, 0x00, 0x00, 0x00));
    
    // 点を左に 3 ピクセル、下に 3 ピクセル移動する
    pixel.Offset(-3, 3);
}

図 12.11. 実行結果[ピクセルの演算]

実行結果[ピクセルの演算]