Direct2D:保持窗口渲染目标的区域不变

时间:2012-07-03 11:15:28

标签: direct2d

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

问题是当我绘制到HwndRengerTarget时,这些窗口会被涂上。

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

这可能吗?

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

感谢。

3 个答案:

答案 0 :(得分:2)

如果要手动将渲染限制到某个区域,可以使用图层(ID2D1Layer个对象)。 更多信息http://msdn.microsoft.com/en-us/library/windows/desktop/dd756654(v=vs.85).aspx

如果可见区域是矩形,则可以通过方法PushAxisAlignedClipPopAxisAlignedClip使用轴对齐剪辑更简单。 http://msdn.microsoft.com/en-us/library/windows/desktop/dd742855(v=vs.85).aspx

将绘图限制为某种形状的另一种方法是将其渲染为位图,然后通过FillGeomtry方法中的位图画笔使用此位图。 http://msdn.microsoft.com/en-us/library/windows/desktop/dd371933(v=vs.85).aspx

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我遇到了同样的问题。

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