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::EndDraw 或 ID2D1RenderTarget::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 |
标头 | d2d1.h (包括 D2d1.h) |
Library | D2d1.lib |
DLL | D2d1.dll |