我有一些渲染代碼,它依賴於DrawingContext.PushClip
和相應的Pop
方法。WPF Push and Pop
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.PushClip(whatever);
OnRenderInternal(...);
drawingContext.Pop();
}
現在,讓我們假設真壞事情發生在
OnRenderInternal
方法,它拋出一個異常(在這種情況下Pop
將永遠不會被調用)。這是否會破壞整個渲染過程或者在執行其他操作(並且其他可渲染項目不會發生裁剪)之前,繪圖上下文將自己恢復到某個「安全」狀態?基本上,我是否應該總是關心在執行渲染操作時將繪圖上下文恢復到其初始狀態?
我意識到,在這種簡單的情況下,我可以通過使用
try-finally
聲明來避免麻煩,但如果我忘記保留正確的Push/Pop
堆棧會發生什麼?
謝謝。不過,我真的很感興趣的是,當我忘記調用「Pop」時,我想知道它有多糟糕(請參見我的問題中的最後一句)。 –
好吧,如果*任何*無法呈現並且每次都拋出一個錯誤,那麼在彈出之前什麼也不會呈現。 –