我想请教如何优化 Compact Framework 中的重绘?GetHashCode() 没有帮助,因为它总是返回不同的哈希码。
无论如何,我有一个程序,您可以在运行时拖动对象并调整其大小。该对象是一个透明对象,它有一个 PNG 图像,该图像还可以相对于对象客户端大小动态调整大小。
虽然我注意到,(例如,我有 4 个透明对象并且我正在拖动或调整一个对象的大小)所有 4 个都会触发 OnPaintBackground,即使 3 个没有移动。另一个当我只是点击一个对象时..它仍然会触发 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);
}
提前致谢。