Condividi tramite


Come disegnare e riempire una forma di base

In questo argomento viene descritto come disegnare una forma di base. L'interfaccia ID2D1RenderTarget fornisce metodi per delineare e riempire ellissi, rettangoli e linee. Negli esempi seguenti viene illustrato come creare e disegnare un'ellisse.

Questo argomento contiene le sezioni seguenti:

Disegnare il contorno di un'ellisse con un tratto solido

Per disegnare il contorno di un'ellisse, si definisce un pennello (ad esempio un 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. L'esempio seguente crea 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 seguente definisce un D2D1_ELLIPSE e lo usa con il pennello definito nell'esempio precedente per disegnare il contorno 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);

Disegnare un'ellisse con un tracciato tratteggiato

Nell'esempio precedente è stato utilizzato un tratto semplice. È possibile modificare l'aspetto di un tratto in diversi modi creando un ID2D1StrokeStyle. Il ID2D1StrokeStyle consente di specificare la forma all'inizio e alla fine di un tratto, se ha un motivo a tratteggio, eccetera. L'esempio seguente crea un ID2D1StrokeStyle che descrive un tratto tratteggiato. In questo esempio viene usato un modello 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 seguente viene utilizzato 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, utilizzare il metodoFillEllipse. Nell'esempio seguente viene utilizzato il metodo DrawEllipse per delineare l'ellisse, quindi viene utilizzato 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, poi riempita con un colore grigio solido

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

Nel prossimo esempio viene prima riempita l'ellisse, quindi ne viene disegnato il contorno. In questo esempio viene generato l'output illustrato nella figura seguente.

illustrazione di un'ellisse riempita con un colore grigio uniforme e quindi delineata con un tratto tratteggiato

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 oggetti ID2D1Geometry e usarli con i metodiDrawGeometrye FillGeometry. Per ulteriori informazioni, vedere la panoramica delle geometrie .

Panoramica delle geometrie

Panoramica dei pennelli