0

詳しく説明させてください。D2D長方形を次のように定義します。

D2D1_RECT_F rect1 = D2D1::RectF(5, 0, 150, 150);

および楕円は次のようになります。

D2D1_ELLIPSE ellipse1 = D2D1::Ellipse(D2D1::Point2F(75.f, 75.f), 75.f, 75.f);

これらの形状を描画するには、最初にそれらを変換して、rendertargetに渡します。

m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(D2D1::SizeF(200, 50)));
m_pRenderTarget->FillRectangle(&rect1, m_pLinearGradientBrush);

ランダムな数の長方形と楕円を作成し、それらを配列に格納して、それらを描画できるようにする方法が欲しいのですが。0から5までの乱数を返す関数があります。その番号を使用して、これらの形状を指す配列を作成し、それらを繰り返して画面に描画できるようにしたいと思います。この問題にどのように取り組むことができるかについてのアイデアはありますか?

4

1 に答える 1

1

これを達成できるのは、次の2つの方法のいずれかです。

オプション1-長方形と楕円をそれぞれ含む2つの配列を作成します。次に、描画するランダムな形状を選択します。最初にランダムな配列を選択し(楕円を描画するか、長方形を描画するかを選択します)、次にその配列から特定の長方形/楕円を選択します。

オプション2-OOを使用して、多態的な描画関数を作成します。

// Define new base class for your shapes
class DrawableShape
{
    HRESULT DrawMe(ID2D1RenderTarget* pUseThisRT);
};

// Create a MyD2DEllipse class implementing DrawableShape
class MyD2DEllipse : public D2D1_RECT_F, public DrawableShape
{
    HRESULT DrawMe(... pUseThisRT)
    {
        pUseThisRT->FillEllipse(this, ...);
    }
};

// Similarly create MyD2DRectangle
class MyD2DRectangle : ..
{
    ...
};

DrawableShape[]次に、ランダムに選択できる配列を作成できます。

void DrawRandomShape(DrawableShape* shapes[])
{
   shapes[rand()]->DrawMe(pUseThisRT);
}
于 2010-12-17T23:06:48.063 に答える