Windows Direct2D应该尊重儿童吗? < >我的主窗口有一些子窗口,其中包含由MediaFoundation管理的电影。主窗口是使用Direct2D绘制的。在使用Direct2D绘制主窗口时,我没有进行任何剪裁,因为我希望这可以通过我的WM_PAINT中的BeginPaint来完成

Windows Direct2D应该尊重儿童吗? < >我的主窗口有一些子窗口,其中包含由MediaFoundation管理的电影。主窗口是使用Direct2D绘制的。在使用Direct2D绘制主窗口时,我没有进行任何剪裁,因为我希望这可以通过我的WM_PAINT中的BeginPaint来完成,windows,winapi,direct2d,Windows,Winapi,Direct2d,当我的窗户很小的时候,一切都画得很好。然而,当我把它最大化到4096x2304px分辨率时,就会有可见的闪烁,并且在媒体基金会将其内容吸引到它们之前,我可以很快地看到由Digt2D在媒体基础子窗口中绘制的东西,因此它看起来像DoCT2D剪辑没有真正发生。 这是真的吗?我是否必须手动设置一个DICT2D剪辑区域,以防止它透支媒体基础子窗口,或者我在这里做了什么错事吗?我的主窗口设置了WS\u CLIPCHILDRENset.魔鬼隐藏细节。这最终取决于您如何将所有这些部分编码在一起(设备、交换链、如

当我的窗户很小的时候,一切都画得很好。然而,当我把它最大化到4096x2304px分辨率时,就会有可见的闪烁,并且在媒体基金会将其内容吸引到它们之前,我可以很快地看到由Digt2D在媒体基础子窗口中绘制的东西,因此它看起来像DoCT2D剪辑没有真正发生。


这是真的吗?我是否必须手动设置一个DICT2D剪辑区域,以防止它透支媒体基础子窗口,或者我在这里做了什么错事吗?我的主窗口设置了
WS\u CLIPCHILDREN
set.

魔鬼隐藏细节。这最终取决于您如何将所有这些部分编码在一起(设备、交换链、如何使用MF绘制/绘制什么?),等等。可以肯定的是,这绝对是直接合成(win32)和更新的Windows.UI.Composition(winrt)所涵盖的场景。它是用来“合成”一个场景(使用DirectX技术),这似乎就是你在这里要做的。否则,你有什么复制项目吗?@SimonMourier:我还没有创建MVCE,因为显然涉及到相当多的代码。不过,我确实尝试使用了
PushAxisAlignedClip
PopAxisAlignedClip
,以查看手动设置剪辑区域是否会有所不同,但不幸的是,这没有帮助,这让我有些困惑。尽管我明确地指定了一个剪辑区域,但它使用了<代码> PuxHasialIgNeDeCds< /C>。非常奇怪:/实际上,绘图似乎根本不是罪魁祸首,但
BeginDraw
EndDraw
是罪魁祸首。我可以删除所有的绘图代码,它仍然会闪烁。只需调用
BeginDraw
EndDraw
就足以使其闪烁。哎呀,对不起,这原来是我代码中的一个bug。由于某些原因,
WS\u CLIPCHILDREN
在创建窗口时未设置。我已经修好了,现在一切都很好。抱歉搞混了。就像我说的,魔鬼隐藏在细节中:-)