ID2D1Factory::CreateDCRenderTarget 方法 (d2d1.h)
创建绘制到 Windows 图形设备接口 (GDI) 设备上下文的呈现目标。
语法
HRESULT CreateDCRenderTarget(
[in] const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
[out] ID2D1DCRenderTarget **dcRenderTarget
);
参数
[in] renderTargetProperties
类型: const D2D1_RENDER_TARGET_PROPERTIES*
呈现模式、像素格式、远程处理选项、DPI 信息和硬件呈现所需的最低 DirectX 支持。 若要使设备上下文 (DC) 呈现目标使用 GDI,请将 DXGI 格式设置为 DXGI_FORMAT_B8G8R8A8_UNORM ,将 alpha 模式设置为 D2D1_ALPHA_MODE_PREMULTIPLIED 或 D2D1_ALPHA_MODE_IGNORE。 有关像素格式的详细信息,请参阅 支持的像素格式和 Alpha 模式。
[out] dcRenderTarget
类型: ID2D1DCRenderTarget**
此方法返回时, dcRenderTarget 包含指向由 方法创建的 ID2D1DCRenderTarget 的指针的地址。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。
注解
在使用 DC 呈现目标进行呈现之前,必须使用呈现目标的 BindDC 方法将其与 GDI DC 关联。 针对每个不同的 DC 以及每当要绘制的区域的大小发生更改时执行此操作。
若要使 DC 呈现目标能够与 GDI 配合使用,请将呈现目标的 DXGI 格式设置为 DXGI_FORMAT_B8G8R8A8_UNORM ,将 alpha 模式设置为 D2D1_ALPHA_MODE_PREMULTIPLIED 或 D2D1_ALPHA_MODE_IGNORE。
应用程序应创建一次呈现目标,并在应用程序的生命周期内保留这些目标,直到呈现目标的 EndDraw 方法返回 D2DERR_RECREATE_TARGET 错误。 收到此错误时,请重新创建呈现目标 (以及它) 创建的任何资源。
示例
以下代码创建 DC 呈现目标。
// Create a DC render target.
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(
D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(
DXGI_FORMAT_B8G8R8A8_UNORM,
D2D1_ALPHA_MODE_IGNORE),
0,
0,
D2D1_RENDER_TARGET_USAGE_NONE,
D2D1_FEATURE_LEVEL_DEFAULT
);
hr = m_pD2DFactory->CreateDCRenderTarget(&props, &m_pDCRT);
在前面的代码中, m_pD2DFactory 是指向 ID2D1Factory 的指针, m_pDCRT 是指向 ID2D1DCRenderTarget 的指针。
下一个代码示例将 DC 绑定到 ID2D1DCRenderTarget。
HRESULT DemoApp::OnRender(const PAINTSTRUCT &ps)
{
// Get the dimensions of the client drawing area.
GetClientRect(m_hwnd, &rc);
// Bind the DC to the DC render target.
hr = m_pDCRT->BindDC(ps.hdc, &rc);
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 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 |