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

12.4. 図形の種類

図 12.12. 図形の種類

図形の種類

12.4.1. 線

表 12.3. 線分を表すクラス

クラス名 BREW の構造体 図形の種類 解説
SFXLine AEELine 直線を表すクラスです。

参照: BREW API AEELine

例 12.15. 直線の定義

// 始点 (20, 40)、終点 (150, 200) の直線
SFXLine line(20, 40, 150, 200);

例 12.16. 直線の描画

// SFXGraphics インスタンスの取得
SFXGraphicsPtr graphics = SFXGraphics::GetInstance();
graphics->DrawLine(line);         // 線を描画する

図 12.13. 実行結果[直線の描画]

実行結果[直線の描画]

例 12.17. 直線の値の取得

SInt16 startX = line.GetStartX(); // startX = 20
SInt16 startY = line.GetStartY(); // startY = 40
SInt16 endX = line.GetEndX();     // endX = 150
SInt16 endY = line.GetEndY();     // endY = 200

例 12.18. 直線の設定

// 始点を (10, 20) に設定する
line.SetStart(10, 20);

// X 座標と Y 座標に分けて始点を設定する
line.SetStartX(10);
line.SetStartY(20);

// 終点を (200, 220) に設定する
line.SetEnd(200, 220);

//  X 座標と Y 座標に分けて終点を設定する
line.SetEndX(200);
line.SetEndY(220);

図 12.14. 実行結果[直線の設定]

実行結果[直線の設定]

例 12.19. 直線の演算

// 始点を (40, 50)、終点を (150, 50) に設定する
line.Set(40, 50, 150, 50);

graphics->DrawLine(line);     // 線を描画する

// 線を右に 0 ピクセル、下に 30 ピクセル移動する
line.Offset(0, 30);

graphics->DrawLine(line);     // 線を描画する

// 線を右に 40 ピクセル、下に 50 ピクセル移動する
line.Offset(40, 50);

// 終点を左に 20 ピクセル移動する (左への移動は引き算でも記述できる)
line.SubEndX(20);

graphics->DrawLine(line);     // 線を描画する

SIntN i;
for (i = 0; i < 5; ++i) {
    // 線を右に 0 ピクセル、下に 20 ピクセル移動する
    line.Offset(0, 20);
    graphics->DrawLine(line); // 線を描画する
}

図 12.15. 実行結果[直線の演算]

実行結果[直線の演算]

12.4.2. 矩形

表 12.4. 矩形を表すクラス

クラス名 BREW の構造体 図形の種類 解説
SFXRectangle AEERect 矩形 矩形を表すクラスです。

参照: BREW API AEERect

例 12.20. 矩形の定義

// 左上の点 (20, 80)、幅 200、高さ 100 の矩形
SFXRectangle rectangle(20, 80, 200, 100);

例 12.21. 矩形の枠線の描画

SFXGraphicsPtr graphics = SFXGraphics::GetInstance();
graphics->DrawRectangle(rectangle);

図 12.16. 実行結果[矩形の枠線の描画]

実行結果[矩形の枠線の描画]

例 12.22. 矩形を塗り潰す描画

graphics->FillRectangle(rectangle, SFXRGBColor(0x00, 0x00, 0x00, 0x00));

図 12.17. 実行結果[矩形を塗り潰す描画]

実行結果[矩形を塗り潰す描画]

参照 :

例 12.23. 矩形の値の取得

SInt16 left   = rectangle.GetLeft();   // left   = 20
SInt16 right  = rectangle.GetRight();  // right  = 220
SInt16 top    = rectangle.GetTop();    // top    = 80
SInt16 bottom = rectangle.GetBottom(); // bottom = 180
SInt16 width  = rectangle.GetWidth();  // width  = 200
SInt16 height = rectangle.GetHeight(); // height = 100

例 12.24. 辺の取得

SFXLine leftLine   = rectangle.GetEdgeLeft();
SFXLine rightLine  = rectangle.GetEdgeRight();
SFXLine topLine    = rectangle.GetEdgeTop();
SFXLine bottomLine = rectangle.GetEdgeBottom();

例 12.25. 矩形の底辺と右辺だけの描画

graphics->DrawLine(rectangle.GetEdgeBottom());
graphics->DrawLine(rectangle.GetEdgeRight());

図 12.18. 実行結果

実行結果

例 12.26. 矩形の設定

rectangle.Set(30, 45, 200, 100);
rectangle.SetLeft(30);
rectangle.SetRight(230);
rectangle.SetTop(45);
rectangle.SetBottom(145);
rectangle.SetWidth(200);
rectangle.SetHeight(100);
graphics->DrawRectangle(rectangle);

図 12.19. 実行結果[矩形の設定]

実行結果[矩形の設定]

例 12.27. 矩形の演算

// 画面全体の矩形を取得する
SFXRectangle rectangle = SFXGraphics::GetDeviceRectangle();

// 矩形を横 20 ピクセル、縦 30 ピクセルだけ縮める
rectangle.Deflate(20, 30);

// 矩形を描画する
graphics->DrawRectangle(rectangle);

// 矩形の上辺の Y 座標に 50 だけ加算する
rectangle.AddTop(50);

// 矩形を黒色で塗り潰す
graphics->FillRectangle(rectangle, SFXRGBColor(0x00, 0x00, 0x00, 0x00));

図 12.20. 実行結果[矩形の演算]

実行結果[矩形の演算]

12.4.3. 三角形・円・扇形など

表 12.5. 三角形・円・扇形などを表すクラス

クラス名 BREW の構造体 図形の種類 解説
SFXTriangle AEETriangle 三角形 3 点 (x1, y1), (x2, y2), (x3, y3) を持つ、三角形を表すクラスです。
SFXCircle AEECircle 中心 (x, y)、半径を持つ、円を表すクラスです。
SFXPie AEEPie 扇形 中心 (x, y)、半径、開始角度、範囲角度を持つ、扇形を表すクラスです。
SFXArc AEEArc 中心 (x, y)、半径、開始角度、範囲角度を持つ、弧を表すクラスです。
SFXEllipse AEEEllipse 楕円 中心 (x, y)、左右半径、上下半径の値を持つ、楕円を表すクラスです。

参照: BREW API AEETriangle | BREW API AEECircle | BREW API AEEPie | BREW API AEEArc | BREW API AEEEllipse

例 12.28. 三角形・円・扇形などの描画

// 三角形
// 左から x1, y1, x2, y2, x3, y3
SFXTriangle triangle(10, 40, 105, 25, 80, 95);
// 三角形の描画
graphics->DrawTriangle(triangle);

// 円
// 左から中心の x 座標、中心の y 座標、半径
SFXCircle circle(170, 60, 40);
// 円の描画
graphics->DrawCircle(circle);

// 扇形
// 左から中心の x 座標、中心の y 座標、半径、開始角度、範囲角度
SFXPie pie(80, 160, 60, 120, 60);
// 扇形の描画
graphics->DrawPie(pie);

// 弧
// 左から中心の x 座標、中心の y 座標、半径、開始角度、範囲角度
SFXArc arc(190, 160, 60, 120, 60);
// 弧の描画
graphics->DrawArc(arc);

// 楕円
// 左から中心の x 座標、中心の y 座標、左右半径、上下半径
SFXEllipse ellipse(110, 200, 100, 20);
// 楕円の描画
graphics->DrawEllipse(ellipse);

図 12.21. 実行結果[三角形・円・扇形などの描画]

実行結果[三角形・円・扇形などの描画]

12.4.4. 多角形と折れ線

SFXPolygonSFXPolyline クラスでは、頂点 ( SFXPixel ) の座標の配列を外部で確保し、インスタンスに設定します。

表 12.6. 多角形・折れ線を表すクラス

クラス名 BREW の構造体 図形の種類 解説
SFXPolygon AEEPolygon 多角形 多角形を表すクラスです。
SFXPolyline AEEPolyline 折れ線 折れ線を表すクラスです。

参照: BREW API AEEPolygon | BREW API AEEPolyline

[Caution] ピクセルの配列

頂点を表すピクセルの配列が破壊されないように注意します。

例 12.29. 多角形と折れ線の描画

// 多角形の頂点
SFXPixel pixel[5];
pixel[0].Set(30, 80);
pixel[1].Set(35, 50);
pixel[2].Set(130, 30);
pixel[3].Set(180, 40);
pixel[4].Set(190, 90);

// 多角形の定義 ( 頂点の配列とサイズを設定する )
SFXPolygon polygon(&pixel[0], lengthof(pixel));

// 多角形の描画
graphics->DrawPolygon(polygon);

// 折れ線の頂点
SFXPixel pixel[5];
pixel[0].Set(30, 80);
pixel[1].Set(35, 50);
pixel[2].Set(130, 30);
pixel[3].Set(180, 40);
pixel[4].Set(190, 90);

// 折れ線の定義 (頂点の配列とサイズを設定する)
SFXPolyline polyline(&pixel[0], lengthof(pixel));

// 折れ線の描画
graphics->DrawPolyline(polyline);

図 12.22. 実行結果[多角形の描画]

実行結果[多角形の描画]

図 12.23. 実行結果[折れ線の描画]

実行結果[折れ線の描画]