typedef struct D2D1_HWND_RENDER_TARGET_PROPERTIES {
HWND hwnd;
D2D1_SIZE_U pixelSize;
D2D1_PRESENT_OPTIONS presentOptions;
} D2D1_HWND_RENDER_TARGET_PROPERTIES;
- hwnd: 指定用于创建渲染目标的窗口句柄(HWND)。
- pixelSize: 指定渲染目标的大小,是一个 D2D1_SIZE_U 结构体,包含宽度和高度。
- presentOptions: 指定渲染目标的呈现选项,是一个 D2D1_PRESENT_OPTIONS 枚举。
通常,这个结构体用于创建与窗口相关联的 Direct2D 渲染目标。下面是一个示例,演示如何使用 HwndRenderTargetProperties 结构体创建 ID2D1HwndRenderTarget 对象:
#include <d2d1.h>
#include <d2d1helper.h>
// 初始化 Direct2D 和相关资源
HRESULT InitializeD2D(HWND hwnd, ID2D1Factory** ppFactory, ID2D1HwndRenderTarget** ppRenderTarget)
{
// 创建 Direct2D 工厂
HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, ppFactory);
if (SUCCEEDED(hr)) {
RECT rc;
GetClientRect(hwnd, &rc);
// 创建 Hwnd 渲染目标属性
D2D1_HWND_RENDER_TARGET_PROPERTIES hwndRenderTargetProperties = {
hwnd,
D2D1::SizeU(rc.right - rc.left, rc.bottom - rc.top),
D2D1_PRESENT_OPTIONS_NONE
};
// 创建 Direct2D 渲染目标
hr = (*ppFactory)->CreateHwndRenderTarget(
D2D1::RenderTargetProperties(),
hwndRenderTargetProperties,
ppRenderTarget
);
}
return hr;
}
// 绘制内容
void DrawContent(ID2D1HwndRenderTarget* pRenderTarget)
{
// 开始绘制
pRenderTarget->BeginDraw();
// 清空背景色
pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
// 在此添加绘制代码...
// 结束绘制
pRenderTarget->EndDraw();
}
// 释放资源
void Cleanup(ID2D1Factory* pFactory, ID2D1HwndRenderTarget* pRenderTarget)
{
if (pRenderTarget != NULL) {
pRenderTarget->Release();
}
if (pFactory != NULL) {
pFactory->Release();
}
}
// 主窗口过程
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static ID2D1Factory* pFactory = NULL;
static ID2D1HwndRenderTarget* pRenderTarget = NULL;
switch (message) {
case WM_CREATE:
if (FAILED(InitializeD2D(hwnd, &pFactory, &pRenderTarget))) {
return -1; // 创建失败,结束窗口
}
return 0;
case WM_PAINT:
DrawContent(pRenderTarget);
ValidateRect(hwnd, NULL);
return 0;
case WM_DESTROY:
Cleanup(pFactory, pRenderTarget);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
// 主函数和窗口创建、消息循环等代码...
在这个示例中,InitializeD2D 函数使用 HwndRenderTargetProperties 结构体创建了一个与窗口关联的 Direct2D 渲染目标。DrawContent 函数用于实际的绘制操作。在 WndProc 中,通过处理窗口消息,确保在绘制之前创建了 Direct2D 资源,以及在窗口关闭时进行了资源释放。
转载请注明出处:http://www.zyzy.cn/article/detail/25447/Win32 API/D2d1helper.h/HwndRenderTargetProperties