我想問一些關於如何在Compact Framework中優化重繪的建議? GetHashCode()沒有幫助,因爲它總是返回不同的哈希碼。NETCF - 優化重新繪製(onPaint)
無論如何,我有一個程序,您可以在運行時拖動和調整對象的大小。這個對象是一個透明的對象,它有一個PNG圖像,它也可以根據對象客戶端大小動態調整大小。儘管我注意到了(例如,我有4個透明對象,並且正在拖動或調整其中一個),但即使3不移動,它們中的4個也會觸發OnPaintBackground。另一個當我只是在一個對象上敲擊時,它觸發onPaintBacground()。無論如何,當這些事件被觸發時我沒有問題。
我喜歡做的是優化,這意味着我只需要在必要時重新繪製對象。
你們能給我們一個建議嗎?
這裏是我的僞C#代碼提前
Bitmap _backBuff;
onResize() {
if(_backBuff != null) _backBuff.Dispose();
_backBuff = new Bitmap(ClientSize.Width, ClientSize.Height);
Invalidate();
}
onPaintBackground(e) /*have to use onPaintBackground because MSDN said it's faster*/ {
using(Graphics g = Graphics.FromImage(_backBuff)) {
g.Clear(Color.Black);
// draw background
....some interface calling here
....and paint the background
// draw alpha PNG
.. get hDc
.. paint PNG
.. release hDc
}
e.Graphics.DrawImage(_backBuff,0,0);
}
感謝。
OnPaintBackground更快嗎?你能否提供該陳述的參考? 通常,當我在WinCE中繪製透明的東西時,我會重寫paintBackground並將它留下_empty_,然後在Paint中繪製我的東西。 – Quibblesome 2010-06-08 18:29:31