出于美观原因,Direct2D渲染循环在其自己的线程上运行。无论主窗口上的窗口调整大小或其他消息泵块如何,都可以实现平滑且即时的动画。除非鼠标悬停,滚动,窗口大小调整等使场景无效,否
一旦绘图代码在渲染目标上调用Monitor.Wait
,我就看不到取消演示文稿的方法。如果窗口以某种方式失效,则场景将被丢弃并重新绘制。我可以做些什么来回到一个干净的石板,为下一个BeginDraw
做好准备,而无需完成并展示场景?我是否可以导致渲染错误来中断将跳过演示文稿的绘图线程?
答案 0 :(得分:0)
是的,试着导致错误。例如renderTarget->PushAxisAlignedClip()
然后renderTarget->EndDraw()
而不弹出剪辑。这将导致D2DERR_PUSH_POP_UNBALANCED (0x88990016)
。然后,您必须Flush()
目标才能重置错误状态。