ID2D1RenderTarget::D rawRectangle (constD2D1_RECT_F&,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) 方法 (d2d1.h)

绘制具有指定维度和笔划样式的矩形的轮廓。

语法

void DrawRectangle(
  const D2D1_RECT_F & rect,
  ID2D1Brush          *brush,
  FLOAT               strokeWidth,
  ID2D1StrokeStyle    *strokeStyle
);

参数

rect

类型:[in] const D2D1_RECT_F &

要绘制的矩形的尺寸(以与设备无关的像素为单位)。

brush

类型:[in] ID2D1Brush*

用于绘制矩形笔划的画笔。

strokeWidth

类型:[in] FLOAT

笔划的宽度,以与设备无关的像素为单位。 该值必须大于或等于 0.0f。 如果未指定此参数,则默认为 1.0f。 笔划以线条为中心。

strokeStyle

类型:[in,可选] ID2D1StrokeStyle*

要绘制的笔划的样式,或用于绘制纯笔画的 NULL

返回值

备注

此方法失败时,它不会返回错误代码。 若要确定绘图方法 ((如 DrawRectangle) )是否失败,检查 ID2D1RenderTarget::EndDrawID2D1RenderTarget::Flush 方法返回的结果。

示例

以下示例使用 ID2D1HwndRenderTarget 绘制和填充多个矩形。 此示例生成如下图所示的输出。

网格背景上两个矩形的插图
// This method discards device-specific
// resources if the Direct3D device disappears during execution and
// recreates the resources the next time it's invoked.
HRESULT DemoApp::OnRender()
{
    HRESULT hr = S_OK;

    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        m_pRenderTarget->BeginDraw();

        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        D2D1_SIZE_F rtSize = m_pRenderTarget->GetSize();

        // Draw a grid background.
        int width = static_cast<int>(rtSize.width);
        int height = static_cast<int>(rtSize.height);

        for (int x = 0; x < width; x += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(static_cast<FLOAT>(x), 0.0f),
                D2D1::Point2F(static_cast<FLOAT>(x), rtSize.height),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }

        for (int y = 0; y < height; y += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(0.0f, static_cast<FLOAT>(y)),
                D2D1::Point2F(rtSize.width, static_cast<FLOAT>(y)),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }

        // Draw two rectangles.
        D2D1_RECT_F rectangle1 = D2D1::RectF(
            rtSize.width/2 - 50.0f,
            rtSize.height/2 - 50.0f,
            rtSize.width/2 + 50.0f,
            rtSize.height/2 + 50.0f
            );

        D2D1_RECT_F rectangle2 = D2D1::RectF(
            rtSize.width/2 - 100.0f,
            rtSize.height/2 - 100.0f,
            rtSize.width/2 + 100.0f,
            rtSize.height/2 + 100.0f
            );


        // Draw a filled rectangle.
        m_pRenderTarget->FillRectangle(&rectangle1, m_pLightSlateGrayBrush);

        // Draw the outline of a rectangle.
        m_pRenderTarget->DrawRectangle(&rectangle2, m_pCornflowerBlueBrush);

        hr = m_pRenderTarget->EndDraw();
    }

    if (hr == D2DERR_RECREATE_TARGET)
    {
        hr = S_OK;
        DiscardDeviceResources();
    }

    return hr;
}

有关相关教程,请参阅 创建简单的 Direct2D 应用程序

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1.h
Library D2d1.lib
DLL D2d1.dll

另请参阅

创建简单的 Direct2D 应用程序

如何绘制和填充基本形状

ID2D1RenderTarget