我想问一些关于如何在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