ID2D1RenderTarget::D rawRoundedRectangle (constD2D1_ROUNDED_RECT&,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) 方法 (d2d1.h)
使用指定的笔划样式绘制指定圆角矩形的轮廓。
语法
void DrawRoundedRectangle(
const D2D1_ROUNDED_RECT & roundedRect,
ID2D1Brush *brush,
FLOAT strokeWidth,
ID2D1StrokeStyle *strokeStyle
);
参数
roundedRect
类型:[in] const D2D1_ROUNDED_RECT &
要绘制的圆角矩形的维度(以设备无关像素为单位)。
brush
类型:[in] ID2D1Brush*
用于绘制圆角矩形轮廓的画笔。
strokeWidth
类型:[in] FLOAT
笔划的宽度,以与设备无关的像素为单位。 该值必须大于或等于 0.0f。 如果未指定此参数,则默认为 1.0f。 笔划以线条为中心。
strokeStyle
类型:[in,可选] ID2D1StrokeStyle*
圆角矩形笔划的样式,或 NULL 以绘制纯色笔划。 默认值为 NULL。
返回值
无
备注
如果此方法失败,则不会返回错误代码。 若要确定绘图操作 ((如 DrawRoundedRectangle) )是否失败,检查 ID2D1RenderTarget::EndDraw 或 ID2D1RenderTarget::Flush 方法返回的结果。
示例
以下示例使用 DrawRoundedRectangle 和 FillRoundedRectangle 方法来轮廓和填充圆角矩形。 此示例生成下图所示的输出。
// Called whenever the application needs to display the client
// window.
HRESULT DrawAndFillRoundedRectangleExample::OnRender()
{
HRESULT hr;
// Create the render target and brushes if they
// don't already exists.
hr = CreateDeviceResources();
if (SUCCEEDED(hr))
{
// Retrieve the size of the render target.
D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();
m_pRenderTarget->BeginDraw();
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
// Paint a grid background.
m_pRenderTarget->FillRectangle(
D2D1::RectF(0.0f, 0.0f, renderTargetSize.width, renderTargetSize.height),
m_pGridPatternBitmapBrush
);
// Define a rounded rectangle.
D2D1_ROUNDED_RECT roundedRect = D2D1::RoundedRect(
D2D1::RectF(20.f, 20.f, 150.f, 100.f),
10.f,
10.f
);
// Draw the rectangle.
m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f);
// Apply a translation transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(200.f, 0.f));
// Draw the rounded rectangle again, this time with a dashed stroke.
m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);
// Apply another translation transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(0.f, 150.f));
// Draw, then fill the rounded rectangle.
m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillRoundedRectangle(roundedRect, m_pSilverBrush);
// Apply another translation transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(200.f, 150.f));
// Fill, then draw the rounded rectangle.
m_pRenderTarget->FillRoundedRectangle(roundedRect, m_pSilverBrush);
m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);
hr = m_pRenderTarget->EndDraw();
if (hr == D2DERR_RECREATE_TARGET)
{
hr = S_OK;
DiscardDeviceResources();
}
}
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 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 |