如何绘制和填充基本形状
本主题介绍如何绘制基本形状。 ID2D1RenderTarget 接口提供用于大纲显示和填充椭圆、矩形和线条的方法。 以下示例演示如何创建和绘制椭圆。
本主题包含以下各节:
使用实线笔划绘制椭圆形的轮廓
若要绘制椭圆形的轮廓,请定义一个画笔 (,例如 ID2D1SolidColorBrush 或 ID2D1LinearGradientBrush) 用于绘制轮廓,定义用于描述椭圆位置和尺寸的 D2D1_ELLIPSE ,然后将这些对象传递给 ID2D1RenderTarget::D rawEllipse 方法。 以下示例创建一个黑色纯色画笔,并将其存储在 m_spBlackBrush 类成员中。
hr = m_pRenderTarget->CreateSolidColorBrush(
D2D1::ColorF(D2D1::ColorF::Black),
&m_pBlackBrush
);
下一个示例定义 一个D2D1_ELLIPSE 并将其与上一示例中定义的画笔一起使用来绘制椭圆形的轮廓。 此示例生成下图所示的输出。
D2D1_ELLIPSE ellipse = D2D1::Ellipse(
D2D1::Point2F(100.f, 100.f),
75.f,
50.f
);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f);
使用虚线绘制椭圆形
前面的示例使用了纯笔划。 可以通过创建 ID2D1StrokeStyle 以多种方式修改笔划的外观。 使用 ID2D1StrokeStyle,可以在笔划的开头和结尾指定形状,以及它是否具有短划线图案等。 以下示例创建描述虚线笔划的 ID2D1StrokeStyle 。 此示例使用预定义的短划线模式 (D2D1_DASH_STYLE_DASH_DOT_DOT),但你也可以指定自己的模式。
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);
下一个示例使用 DrawEllipse 方法的笔划样式。 此示例生成下图所示的输出。
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
绘制和填充椭圆形
若要绘制椭圆的内部,请使用 FillEllipse 方法。 以下示例使用 DrawEllipse 方法勾勒出椭圆形,然后使用 FillEllipse 方法绘制其内部。 此示例生成下图所示的输出。
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
下一个示例先填充椭圆形,然后绘制其轮廓。 此示例生成下图所示的输出。
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
这些示例中省略了代码。
绘制更复杂的形状
若要绘制更复杂的形状,请定义 ID2D1Geometry 对象,并将其与 DrawGeometry 和 FillGeometry 方法一起使用。 有关详细信息,请参阅 几何图形概述。
相关主题