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
- Dibujar una elipse con un trazo discontinuo
- Dibujar y rellenar una elipse
- Dibujar formas más complejas
- Temas relacionados
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.
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.
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.
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.
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.
Temas relacionados