Partager via


Comment dessiner et remplir une forme de base

Cette rubrique explique comment dessiner une forme de base. L’interface ID2D1RenderTarget fournit des méthodes permettant de décrire et de remplir des points de suspension, des rectangles et des lignes. Les exemples suivants montrent comment créer et dessiner une ellipse.

Cette rubrique contient les sections suivantes :

Dessiner le contour d’une ellipse avec un trait uni

Pour dessiner le contour d’une ellipse, vous définissez un pinceau (par exemple , id2D1SolidColorBrush ou ID2D1LinearGradientBrush) pour peindre le contour et un D2D1_ELLIPSE pour décrire la position et les dimensions de l’ellipse, puis passez ces objets à la méthode ID2D1RenderTarget::D rawEllipse . L’exemple suivant crée un pinceau noir uni et le stocke dans le membre de classe m_spBlackBrush.

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

L’exemple suivant définit un D2D1_ELLIPSE et l’utilise avec le pinceau défini dans l’exemple précédent pour dessiner le contour d’une ellipse. Cet exemple génère la sortie illustrée dans l’illustration suivante.

illustration d’une ellipse avec un trait solide

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

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

Dessiner une ellipse avec un trait pointillé

L’exemple précédent utilisait un trait simple. Vous pouvez modifier l’apparence d’un trait de plusieurs manières en créant un ID2D1StrokeStyle. ID2D1StrokeStyle vous permet de spécifier la forme au début et à la fin d’un trait, si elle a un motif de tiret, et ainsi de suite. L’exemple suivant crée un ID2D1StrokeStyle qui décrit un trait pointillé. Cet exemple utilise un modèle de tiret prédéfini , D2D1_DASH_STYLE_DASH_DOT_DOT, mais vous pouvez également spécifier le vôtre.

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);

L’exemple suivant utilise le style de trait avec la méthode DrawEllipse . Cet exemple génère la sortie illustrée dans l’illustration suivante.

illustration d’une ellipse avec un trait pointillé

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

Dessiner et remplir une ellipse

Pour peindre l’intérieur d’une ellipse, vous utilisez la méthode FillEllipse . L’exemple suivant utilise la méthode DrawEllipse pour décrire l’ellipse, puis utilise la méthode FillEllipse pour peindre son intérieur. Cet exemple génère la sortie illustrée dans l’illustration suivante.

illustration d’une ellipse avec un trait pointillé puis rempli d’une couleur gris unie

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

L’exemple suivant remplit d’abord l’ellipse, puis dessine son contour. Cet exemple génère la sortie illustrée dans l’illustration suivante.

illustration d’une ellipse remplie d’une couleur gris unie, puis tracée d’un trait pointillé

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

Le code a été omis dans ces exemples.

Dessin de formes plus complexes

Pour dessiner des formes plus complexes, vous définissez des objets ID2D1Geometry et vous les utilisez avec les méthodes DrawGeometry et FillGeometry . Pour plus d’informations, consultez Vue d’ensemble des géométries.

Vue d’ensemble des géométries

Vue d’ensemble des pinceaux