我为什么不使用PictureBox控件?

Kon*_*rad 6 c# image picturebox winforms

在他的回答中,里克布鲁斯特说" PictureBox经常被误解".并且"你可能几乎不想使用它."

不幸的是,他没有解释什么是错的PictureBox.我用它来显示和操作一个图像,它有点慢,但如果它不是用于显示图片,它有什么意义呢?

Han*_*ant 5

它是一种便捷控件,对于点击式UI设计非常有用.但可以肯定的是,它非常浪费.虽然它对Label控件没有任何影响.您正在烧毁整个Windows窗口,只是为了绘制图像.本机窗口对象是非常昂贵的系统资源.替代方案是OnPaint()方法中的一行代码,e.Graphics.DrawImage().

Rick指出,这也不是一个非常聪明的控制.它重新调整图像以适应控件每次需要自己绘制的时间.并且它也没有优化图像的像素格式,也迫使GDI +每次都进行像素转换.净效果当然可能是一个缓慢的UI,使图像绘制速度比必要慢100倍肯定不常见.否则,在通用控制中难以做出的那种权衡; 这种优化不是免费的,可能会使内存需求翻倍.

相比之下,像Outlook这样的Microsoft Office程序使用大约50个窗口,其中大多数是工具栏.这就是你在不到10分钟的时间内在Winforms中一起吵架的原因.便利是有代价的.Office程序也是如此,它需要很多程序员.