我正在绘制HwndRengerTarget
与 Direct2D 无关的常规但其他窗口重叠它。
问题是当我绘制到HwndRengerTarget
.
我想告诉 Direct2D 不要触摸特定区域HwndRengerTarget
(即不要触摸屏幕上已经存在的像素),以便这些窗口保持正确可见。
那可能吗?
如果我正常绘制然后RedrawWindow
在窗口上调用,它会闪烁很多。
谢谢。
我正在绘制HwndRengerTarget
与 Direct2D 无关的常规但其他窗口重叠它。
问题是当我绘制到HwndRengerTarget
.
我想告诉 Direct2D 不要触摸特定区域HwndRengerTarget
(即不要触摸屏幕上已经存在的像素),以便这些窗口保持正确可见。
那可能吗?
如果我正常绘制然后RedrawWindow
在窗口上调用,它会闪烁很多。
谢谢。
如果您想手动将渲染限制在某个区域,您可以使用图层(ID2D1Layer
对象)。此处的更多信息图层概述
PushAxisAlignedClip
如果可见区域是矩形,则通过方法和使用轴对齐剪辑可能更简单 PopAxisAlignedClip
。
ID2D1RenderTarget::PushAxisAlignedClip
另一种将绘制限制为某种形状的方法是将其渲染为位图,然后在FillGeomtry
方法中通过位图画笔使用此位图。
ID2D1RenderTarget::FillGeometry
为什么不安排窗口(HWND),使 Direct2D 位于 z-index 的底部?它应该是其父母的第一个孩子。然后剪裁将是自动的。您可能需要 WS_CLIPSIBLINGS 窗口样式。
我有同样的问题。
通过为 D2D 子 HWND 调用 CreateWindowEx LAST 来修复。所以在创建所有其他子窗口之后。