如何绘制和填充基本形状

本主题介绍如何绘制基本形状。 ID2D1RenderTarget 接口提供用于大纲显示和填充椭圆、矩形和线条的方法。 以下示例演示如何创建和绘制椭圆。

本主题包含以下各节:

使用实线笔划绘制椭圆形的轮廓

若要绘制椭圆形的轮廓,请定义一个画笔 (,例如 ID2D1SolidColorBrushID2D1LinearGradientBrush) 用于绘制轮廓,定义用于描述椭圆位置和尺寸的 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 对象,并将其与 DrawGeometryFillGeometry 方法一起使用。 有关详细信息,请参阅 几何图形概述

几何概述

画笔概述