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

12.7. クリッピング

クリッピングとは、矩形や円、三角形、多角形など、指定した図形からはみだした部分を描画しないようにする機能です。

SFXClip はクリッピングする領域の図形を表すクラスです。

12.7.1. 矩形でクリッピングする方法

SFXGraphics インスタンスでは矩形のクリッピングだけがサポートされています。

矩形でテキストをクリッピングするコードは以下の通りです。

例 12.34. 矩形でクリッピングする方法

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

// 矩形
SFXRectangle rectangle(10, 10, 150, 55);

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

// 矩形のクリッピング領域を設定する
graphics->SetClip(rectangle);

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

// フォントの高さを取得する
SInt16 fontHeight = graphics->GetFontHeight();

// テキストを描画する
graphics->DrawSingleText("test clipping", grid, black);

// テキストの描画: grid.AddY(fontHeight) で描画位置を fontHeight だけ下にずらしている
graphics->DrawSingleText("test clipping", grid.AddY(fontHeight), black);
graphics->DrawSingleText("test clipping", grid.AddY(fontHeight), black);

図 12.24. 実行結果[矩形でテキストをクリッピングする方法]

実行結果[矩形でテキストをクリッピングする方法]

12.7.2. 矩形以外でクリッピングする方法

SFXRectangle 以外の図形でクリッピングする場合は、 SFXGraphics インスタンスではなく、SFBGraphics インスタンスを使います。

例 12.35. 円でクリッピングする方法

// SFXGraphics インスタンスが内部で保持する SFBGraphics インスタンスを取得する
SFBGraphicsSmp sfb_graphics = graphics->GetSFBGraphics();

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

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

// クリッピング領域を設定する
sfb_graphics->SetClip(&clip, AEE_GRAPHICS_FRAME);

// 塗り潰しモードを設定する
sfb_graphics->SetFillMode(true);

// 塗り潰す色[灰色]を設定する
sfb_graphics->SetFillColor(SFXRGBColor(0x99, 0x99, 0x99, 0x00));

// 矩形を描画する
sfb_graphics->DrawRect(&SFXRectangle(55, 5, 60, 80));

図 12.25. 実行結果実行結果[円でクリッピングする方法]

実行結果実行結果[円でクリッピングする方法]

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