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

时间:2010-01-28 00:31:08

标签: c# winforms performance picturebox

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

public class NewPictureBox : PictureBox
{
    //absolutely nothing 
}

然后我做了以下事情:

  1. 将派生控件和基本控件的Image属性设置为相当大的图像(800x600),SizeModeNormal(仅显示左上角部分); < / LI>
  2. 连接了NewPictureBoxPictureBox的几个事件,因此在表面上拖动鼠标时可以绘制一个选择框;
  3. 进行设置,以便在Width控件上实时更新选择框的属性(Height / NumericUpDown)。
  4. 问题是当在导出的PB上快速拖动鼠标时,与在基础PB上执行相同操作相比,存在相当大的“不稳定性”。 Width / Height值不会实时更新。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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