クリッピングを行うには ?
IGraphics インターフェイスの IGRAPHICS_SetClip 関数や、IDisplay インターフェイスの IDISPLAY_SetClipRect 関数を使用してクリッピングの範囲を設定できます。
SophiaFramework では、 SFXGraphics::SetClip 関数やSFBGraphics::SetClip 関数や SFBDisplay::SetClipRect 関数を使用します。
[ BREW API のみを使用したコード ]
// // クリッピングを使用して、円形の表示領域内に四角形を描画します。 // IGraphics* graphics = app->g; AEEClip clip; AEERect rect; // 画面を緑色でクリアします。 IGRAPHICS_SetBackground(graphics, 0xCC, 0xFF, 0xCC); IGRAPHICS_ClearViewport(graphics); // クリッピング領域を円に設定します。 clip.type = CLIPPING_CIRCLE; clip.shape.circle.cx = 60; clip.shape.circle.cy = 60; clip.shape.circle.r = 40; IGRAPHICS_SetClip(graphics, &clip,0); // 塗り潰しモードを設定します。 IGRAPHICS_SetFillMode(graphics, TRUE); // 描画色を赤色に設定します。 IGRAPHICS_SetColor(graphics, 0xFF, 0x88, 0x88, 0x00); IGRAPHICS_SetFillColor(graphics, 0xFF, 0xCC, 0xCC, 0x00); // 四角形を描画します。 rect.x = 10; rect.y = 10; rect.dx = 60; rect.dy = 50; IGRAPHICS_DrawRect(graphics, &rect); // クリッピング領域をリセットします。 IGRAPHICS_SetClip(graphics, NULL, 0); // 画面を更新します。 IGRAPHICS_Update(graphics);
[ SophiaFramework を使用したコード ]
// // クリッピングを使用して、円形の表示領域内に四角形を描画します。 // SFXClip clip; SFXRectangle rect; // SFBGraphics インスタンスを作成します。 SFBGraphicsSmp graphics = SFBGraphics::NewInstance(); // 画面を緑色でクリアします。 graphics->SetBackground(SFXRGBColor(0xCC, 0xFF, 0xCC, 0x00)); graphics->ClearViewport(); // クリッピング領域を円に設定します。 clip.Set(SFXCircle(60, 60, 40)); graphics->SetClip(&clip, 0); // 塗り潰しモードを設定します。 graphics->SetFillMode(true); // 描画色を赤色に設定します。 graphics->SetColor(SFXRGBColor(0xFF, 0x88, 0x88, 0x00)); graphics->SetFillColor(SFXRGBColor(0xFF, 0xCC, 0xCC, 0x00)); // 四角形を描画します。 rect.Set(10, 10, 60, 50); graphics->DrawRect(&rect); // クリッピング領域をリセットします。 graphics->ClearClip(); // 画面を更新します。 graphics->Update();