Cómo dibujar y rellenar una forma básica

En este tema se describe cómo dibujar una forma básica. La interfaz ID2D1RenderTarget proporciona métodos para esquematización y relleno de puntos suspensivos, rectángulos y líneas. En los ejemplos siguientes se muestra cómo crear y dibujar una elipse.

Este tema contiene las siguientes secciones:

Dibujar el contorno de una elipse con un trazo sólido

Para dibujar el contorno de una elipse, defina un pincel (como id2D1SolidColorBrush o ID2D1LinearGradientBrush) para pintar el contorno y un D2D1_ELLIPSE para describir la posición y las dimensiones de la elipse, y luego pase estos objetos al método ID2D1RenderTarget::D rawEllipse . En el ejemplo siguiente se crea un pincel de color sólido negro y se almacena en el miembro de clase m_spBlackBrush.

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

En el ejemplo siguiente se define un D2D1_ELLIPSE y se usa con el pincel definido en el ejemplo anterior para dibujar el contorno de una elipse. En este ejemplo se genera la salida que se muestra en la ilustración siguiente.

ilustración de una elipse con un trazo sólido

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

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

Dibujar una elipse con un trazo discontinuo

En el ejemplo anterior se usaba un trazo sin formato. Puede modificar el aspecto de un trazo de varias maneras mediante la creación de un ID2D1StrokeStyle. Id2D1StrokeStyle permite especificar la forma al principio y al final de un trazo, si tiene un patrón de guion, etc. En el ejemplo siguiente se crea un ID2D1StrokeStyle que describe un trazo discontinuo. En este ejemplo se usa un patrón de guion predefinido, D2D1_DASH_STYLE_DASH_DOT_DOT, pero también puede especificar el suyo propio.

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

En el ejemplo siguiente se usa el estilo de trazo con el método DrawEllipse . En este ejemplo se genera la salida que se muestra en la ilustración siguiente.

ilustración de una elipse con un trazo discontinuo

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

Dibujar y rellenar una elipse

Para pintar el interior de una elipse, utilice el método FillEllipse . En el ejemplo siguiente se usa el método DrawEllipse para describir la elipse y, a continuación, se usa el método FillEllipse para pintar su interior. En este ejemplo se genera la salida que se muestra en la ilustración siguiente.

ilustración de una elipse con un trazo discontinuo y, a continuación, rellenado con un color gris sólido

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

En el ejemplo siguiente se rellena primero la elipse y, a continuación, se dibuja su contorno. En este ejemplo se genera la salida que se muestra en la ilustración siguiente.

ilustración de una elipse llena de un color gris sólido y, a continuación, se describe con un trazo discontinuo

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

El código se ha omitido en estos ejemplos.

Dibujar formas más complejas

Para dibujar formas más complejas, defina objetos ID2D1Geometry y úselos con los métodos DrawGeometry y FillGeometry . Para obtener más información, consulte Información general sobre geometrías.

Información general sobre las geometrías

Información general sobre los pinceles