WinForms性能之谜:派生的PictureBox控件比原来慢?
在我的.NET 2.0项目中,我创建了一个空的派生类System.Windows.Forms.PictureBox
:
public class NewPictureBox : PictureBox { //absolutely nothing }
然后我做了以下事情:
- 将派生控件和基本控件的
Image
属性设置为相当大的图像(800×600),SizeMode
为Normal
(仅显示左上角部分); - 连接了几个
NewPictureBox
和PictureBox
的事件,因此当在表面上拖动鼠标时可以绘制一个选择框; - 设置它以便选择框的属性(
Width
/Height
)将在NumericUpDown
控件上实时更新。
问题是当在导出的PB上快速拖动鼠标时,与在基础PB上执行相同操作相比,存在相当大的“不稳定性”。 Width
/ Height
值不会实时更新。
有人知道为什么会这样吗? 如何使用派生控件实现相同的平滑度? 谢谢!
对于任何希望查看最小样本项目并描述所述问题的人:
http://www.mediafire.com/?i2nq2tmmjzx
通过PB调整图像大小以适应控件是非常昂贵的。 GDI +有一个非常好的filter,但它不是免费的。 在将图像指定给Image属性之前自己调整图像大小,这样PB就不必调整图像大小。
使用Format32bppPArgb创建的位图也可以产生很大的不同,它比任何其他格式快10倍。