6

Rick Brewster在他的回答中说“PictureBox经常被误解”。和“你可能几乎永远不想使用它。”

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

4

1 回答 1

5

这是一个方便的控件,对于点击式 UI 设计很有用。但可以肯定的是,这是非常浪费的。尽管它对 Label 控件没有帮助。您正在烧毁整个 Windows 窗口,只是为了绘制图像。本机窗口对象是非常昂贵的系统资源。另一种方法是您的 OnPaint() 方法中的一行代码,例如,Graphics.DrawImage()。

正如 Rick 指出的那样,它也不是一个非常智能的控制。每次需要绘制自身时,它都会重新缩放图像以适合控件。而且它也没有优化图像的像素格式,迫使GDI+每次都进行像素转换。最终效果肯定是 UI 很慢,让图像的绘制速度比必要的慢 100 倍当然并不罕见。否则,在通用控件中难以做出的那种权衡;这种优化不是免费的,可能会使内存需求增加一倍。

相比之下,像 Outlook 这样的 Microsoft Office 程序使用大约 50 个窗口,其中大部分是工具栏。这就是您在不到 10 分钟的时间内在 Winforms 中拼凑起来的内容。方便是有代价的。Office程序也是如此,它需要很多程序员。

于 2013-11-08T16:16:29.903 回答