0

我正在绘制HwndRengerTarget与 Direct2D 无关的常规但其他窗口重叠它。

问题是当我绘制到HwndRengerTarget.

我想告诉 Direct2D 不要触摸特定区域HwndRengerTarget(即不要触摸屏幕上已经存在的像素),以便这些窗口保持正确可见。

那可能吗?

如果我正常绘制然后RedrawWindow在窗口上调用,它会闪烁很多。

谢谢。

4

3 回答 3

3

如果您想手动将渲染限制在某个区域,您可以使用图层(ID2D1Layer对象)。此处的更多信息图层概述

PushAxisAlignedClip如果可见区域是矩形,则通过方法和使用轴对齐剪辑可能更简单 PopAxisAlignedClipID2D1RenderTarget::PushAxisAlignedClip

另一种将绘制限制为某种形状的方法是将其渲染为位图,然后在FillGeomtry方法中通过位图画笔使用此位图。 ID2D1RenderTarget::FillGeometry

于 2013-02-13T14:35:33.220 回答
2

为什么不安排窗口(HWND),使 Direct2D 位于 z-index 的底部?它应该是其父母的第一个孩子。然后剪裁将是自动的。您可能需要 WS_CLIPSIBLINGS 窗口样式。

于 2012-09-08T16:20:07.577 回答
0

我有同样的问题。

通过为 D2D 子 HWND 调用 CreateWindowEx LAST 来修复。所以在创建所有其他子窗口之后。

于 2013-07-25T16:10:09.520 回答