Tag: direct2d

每次调整窗口大小时内存都会增加

我创建了一个简单的Win32应用程序,并尝试使用Color填充客户区。 当包含“Clear RenderTarget”行时,我看到每次调整窗口大小时内存都会增加几KB。 我的WindowProc: LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_SIZE: { if (pRenderTarget != NULL) { RECT rc; GetClientRect(globalWindowHandle, &rc); D2D1_SIZE_U size = D2D1::SizeU(rc.right, rc.bottom); pRenderTarget->Resize(size); InvalidateRect(globalWindowHandle, NULL, FALSE); } return 0; } break; case WM_CREATE: { HRESULT dx = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory); if (FAILED(dx)) { […]

如何清除Direct2D渲染目标以使其完全透明

我试图在一个看不见的HWND上绘制半透明的矩形 。 但是,使用ID2D1HwndRenderTarget :: Clear清除窗口会使整个窗口变黑,所以当我在顶部绘制矩形时,它们看起来是半黑色的。 如果我不清除()并且不绘制,那么窗口是不可见的,因为它应该是。 Clear()是罪魁祸首; 但是,如果我不使用它,那么绘画就会非常糟糕。 这是我在WindowProc中使用的代码: case WM_PAINT: // Begin drawing pRenderTarget->BeginDraw(); pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); // Clear the window pRenderTarget->Clear(); // Paint the panel and its children D2DSurface()->StartPainting(); { D2DSurface()->PaintTraverse(panel); } D2DSurface()->FinishPainting(); // Finish drawing HRESULT hr = plat->pRenderTarget->EndDraw(); 提前致谢!