1
考慮了.NET控件下面被覆蓋的OnPaint方法後恢復圖形狀態:我需要在我的OnPaint覆蓋繪畫(用於.NET控件)
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.RotateTransform(180);
// lots of drawing code
}
難道我做的一個問題當我完成時不恢復e.Graphics對象的狀態?
在Java中,這通常是通過複製傳遞的Graphics對象來完成的,因此傳遞的Graphics對象不會被修改,也不需要恢復它的狀態。 Similar Java Question
我可以通過使用Save()/ Restore()方法在.NET中實現這一點。所以我的問題是:
- 在.NET中恢復圖形狀態是否需要/最佳實踐?
- Save()/ Restore()方法有多昂貴?
如果保存和恢復很快,那麼我想我會用它們來恢復我的OnPaint結束時的狀態。 – GarethOwen 2010-09-28 13:58:00
實際上,我沒有看到你在繪圖之前調用了base.OnPaint()*。這是不正確的,你應該允許客戶端事件處理程序在你的頂部繪製。在底部放置base.OnPaint並在此之前調用Restore()。 – 2010-09-28 14:06:47
我不確定它是否不正確。我的基類是一個Panel,如果它有一個背景顏色或圖像,我希望在繪製自己之前繪製它。 – GarethOwen 2010-09-28 15:22:49