Compartir a través de


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 la delimitación y el relleno de elipses, rectángulos y líneas. En los ejemplos siguientes se muestra cómo crear y dibujar una elipse.

Este tema contiene las secciones siguientes:

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, 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 usó un trazo simple. Puede modificar el estilo de un trazo de varias maneras creando un ID2D1StrokeStyle. El ID2D1StrokeStyle le permite indicar la forma al principio y al final de un trazo, si tiene un patrón de línea discontinua, etc. El siguiente ejemplo crea un ID2D1StrokeStyle que describe un trazo discontinuo. En este ejemplo se usa un patrón de rayas predefinido, D2D1_DASH_STYLE_DASH_DOT_DOT, pero también puede definir 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, use 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 luego rellenada 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 rellenada con un color gris sólido y luego contorneada 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 geometrías

Información general sobre pinceles