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

12.5. 図形の演算

SFXRectangle には比較、判定、演算のための関数があります。

例 12.30. 図形の演算

SFXRectangle rectangle1(10, 20, 30, 40);
SFXRectangle rectangle2(20, 10, 30, 40);
SFXRectangle rectangle3;

// 比較
if (rectangle1 == rectangle2) {             
    // rectangle1 と rectangle2 が一致するとき
    
}

// 矩形が有効かどうか
if (rectangle1.IsEmpty()) {                 
    // 幅が 0 以下、または高さが 0 以下のとき
   
}

// 矩形の包含関係
if (rectangle1.IsInsideOf(rectangle2)) {    
    // rectangle1 が rectangle2 に含まれるとき
    
}

// 2 つの矩形の重なった部分を取得する
rectangle3 = rectangle1.Intersection(rectangle2);

// 矩形の重なり判定
if (rectangle1.IntersectsWith(rectangle2)) { 
    // 2 つの矩形の重なった部分が存在するとき
    
}

// 2つの矩形を含む矩形を取得する
rectangle3 = rectangle1.Union(rectangle2);

// 2つの矩形を含む矩形が存在するか判定する
if (rectangle1.UnifiesWith(rectangle2)) {    
    // 2つの矩形を含む矩形が存在するとき
   
}

// 幅と高さが負の場合は正にする
rectangle1.Normalize();

例 12.31. 演算の連結

// rectangle の高さを 50 ピクセル大きくし、下に 30 ピクセル移動した矩形を描画する
// ( rectangle 自身も変更される)
graphics->DrawRectangle(rectangle.AddHeight(50).AddY(30));

// rectangle の底辺の始点を 20 ピクセル右に移動し、終点を 40 ピクセル下に動かた、直線を描画する
// ( rectangle は変更されない )
graphics->DrawLine(rectangle.GetEdgeBottom().AddStartX(20).AddEndY(40));

// SFXGraphics::GetDeviceRectangle() で取得した画面サイズの矩形を縮小し、移動して表示する
graphics->DrawRectangle(SFXGraphics::GetDeviceRectangle().Deflate(40, 20).AddY(10));

// 左上の点 (30, 20)、幅 40 ピクセル、高さ 10 ピクセルの矩形を左右に 5 ピクセル、上下に 10 ピクセル拡大した矩形を描画する
graphics->DrawRectangle(SFXRectangle(30, 20, 40, 10).Inflate(5, 10));