Condividi tramite


Come disegnare e riempire una forma di base

Questo argomento descrive come disegnare una forma di base. L'interfaccia ID2D1RenderTarget fornisce metodi per la struttura e il riempimento di puntini di sospensione, rettangoli e linee. Negli esempi seguenti viene illustrato come creare e disegnare un'ellisse.

In questo argomento sono incluse le sezioni seguenti:

Disegnare la struttura di un oggetto Ellipse con un tratto solido

Per disegnare la struttura di un'ellisse, si definisce un pennello (ad esempio ID2D1SolidColorBrush o ID2D1LinearGradientBrush) per disegnare la struttura e un D2D1_ELLIPSE per descrivere la posizione e le dimensioni dell'ellisse, quindi passare questi oggetti al metodo ID2D1RenderTarget::D rawEllipse . Nell'esempio seguente viene creato un pennello a tinta unita nera e lo archivia nel membro della classe m_spBlackBrush.

hr = m_pRenderTarget->CreateSolidColorBrush(
    D2D1::ColorF(D2D1::ColorF::Black),
    &m_pBlackBrush
    );

L'esempio successivo definisce un D2D1_ELLIPSE e lo usa con il pennello definito nell'esempio precedente per disegnare la struttura di un'ellisse. In questo esempio viene generato l'output illustrato nella figura seguente.

illustrazione di un'ellisse con un tratto solido

D2D1_ELLIPSE ellipse = D2D1::Ellipse(
    D2D1::Point2F(100.f, 100.f),
    75.f,
    50.f
    );

m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f);

Disegna un'ellisse con un tratto tratteggiato

L'esempio precedente ha usato un tratto normale. È possibile modificare l'aspetto di un tratto in diversi modi creando un ID2D1StrokeStyle. ID2D1StrokeStyle consente di specificare la forma all'inizio e alla fine di un tratto, se ha un modello trattino e così via. Nell'esempio seguente viene creato un ID2D1StrokeStyle che descrive un tratto trattino. In questo esempio viene usato un modello di trattino predefinito, D2D1_DASH_STYLE_DASH_DOT_DOT, ma è anche possibile specificare il proprio.

D2D1_STROKE_STYLE_PROPERTIES strokeStyleProperties = D2D1::StrokeStyleProperties(
    D2D1_CAP_STYLE_FLAT,  // The start cap.
    D2D1_CAP_STYLE_FLAT,  // The end cap.
    D2D1_CAP_STYLE_TRIANGLE, // The dash cap.
    D2D1_LINE_JOIN_MITER, // The line join.
    10.0f, // The miter limit.
    D2D1_DASH_STYLE_DASH_DOT_DOT, // The dash style.
    0.0f // The dash offset.
    );

hr = m_pDirect2dFactory->CreateStrokeStyle(strokeStyleProperties, NULL, 0, &m_pStrokeStyle);

Nell'esempio successivo viene usato lo stile del tratto con il metodo DrawEllipse . In questo esempio viene generato l'output illustrato nella figura seguente.

illustrazione di un'ellisse con un tratto tratteggiato

m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);

Disegnare e riempire un'ellisse

Per disegnare l'interno di un'ellisse, si usa il metodo FillEllipse . Nell'esempio seguente viene usato il metodo DrawEllipse per strutturare i puntini di sospensione, quindi viene usato il metodo FillEllipse per disegnare l'interno. In questo esempio viene generato l'output illustrato nella figura seguente.

illustrazione di un'ellisse con un tratto tratteggiato e quindi riempita con un colore grigio a tinta unita

m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);

L'esempio successivo riempie prima i puntini di sospensione, quindi disegna la struttura. In questo esempio viene generato l'output illustrato nella figura seguente.

illustrazione di un'ellisse riempita con un colore grigio a tinta unita e quindi delineata con un tratto trattino

m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);

Il codice è stato omesso da questi esempi.

Disegno di forme più complesse

Per disegnare forme più complesse, definire gli oggetti ID2D1Geometry e usarli con i metodi DrawGeometry e FillGeometry . Per altre informazioni, vedere Panoramica delle geometrie.

Panoramica delle geometrie

Panoramica dei pennelli