WinForms性能之谜:派生的PictureBox控件比原来慢?

在我的.NET 2.0项目中,我创建了一个空的派生类System.Windows.Forms.PictureBox

 public class NewPictureBox : PictureBox { //absolutely nothing } 

然后我做了以下事情:

  1. 将派生控件和基本控件的Image属性设置为相当大的图像(800×600), SizeModeNormal (仅显示左上角部分);
  2. 连接了几个NewPictureBoxPictureBox的事件,因此当在表面上拖动鼠标时可以绘制一个选择框;
  3. 设置它以便选择框的属性( Width / Height )将在NumericUpDown控件上实时更新。

问题是当在导出的PB上快速拖动鼠标时,与在基础PB上执行相同操作相比,存在相当大的“不稳定性”。 Width / Height值不会实时更新。

有人知道为什么会这样吗? 如何使用派生控件实现相同的平滑度? 谢谢!

对于任何希望查看最小样本项目并描述所述问题的人:

http://www.mediafire.com/?i2nq2tmmjzx

通过PB调整图像大小以适应控件是非常昂贵的。 GDI +有一个非常好的filter,但它不是免费的。 在将图像指定给Image属性之前自己调整图像大小,这样PB就不必调整图像大小。

使用Format32bppPArgb创建的位图也可以产生很大的不同,它比任何其他格式快10倍。