前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

9.6. クリッピング

クリッピングとは、ある図形からはみだした部分を描画しないようにする機能です。

SFXClip はクリッピングのための図形を表すクラスです。四角形や円、三角形、多角形でクリッピングができます。

9.6.1. クリッピングの使用例

よく使用する例として、文字列の一部分を描画する場合があります。四角形でクリッピングしています。

// 黒色
SFXRGBColor black(0x00, 0x00, 0x00, 0x00);

// 長方形
SFXRectangle rectangle(10, 10, 150, 55);

// 外枠を描画
graphics->DrawRectangle(rectangle, black);

// クリッピングを長方形にする
SFXClip clip(rectangle);

// クリッピングをセット
graphics->SetClip(rectangle);

// 長方形の左上
SFXGrid grid = rectangle.GetLeftTop();

// フォントの高さ
SInt32 fontHeight = graphics->GetFontHeight();

// 文字列の描画
graphics->DrawText("test clipping", grid, black);

// 文字列の描画 (grid.AddY(fontHeight) で描画位置を fontHeight だけ下にずらしている)
graphics->DrawText("test clipping", grid.AddY(fontHeight), black);
graphics->DrawText("test clipping", grid.AddY(fontHeight), black);

9.6.2. 四角形以外のクリッピング

SFXGraphics クラスでは、クリッピングに使用する図形は、SFXRectangle だけに制限されています。

SFXRectangle 以外の図形でクリッピングする場合は、SFBGraphics インターフェースを取得して使用します。

// SFBGraphics インターフェースを取得
SFBGraphicsSmp g = graphics->GetGraphics();

// 円
SFXCircle circle(100, 50, 40);

// クリッピングを円にする
SFXClip clip(circle);

// クリッピングをセット
g->SetClip(&clip, AEE_GRAPHICS_FRAME);

// 塗りつぶし色を設定
g->SetFillColor(SFXRGBColor(0x99, 0x99, 0x99, 0x00));

// 長方形を描画
g->DrawRect(&SFXRectangle(55, 5, 60, 80));

長方形が円でクリッピングされています。