为什么使用ComponentResourceManager将图像设置为比使用Bitmap慢约100ms?

时间:2012-02-04 01:54:47

标签: c# winforms performance optimization startup

我正在使用Winforms并且需要我的程序启动尽可能快。每毫秒都很重要。

我发现了一个有趣的观察结果。使用资源(Winform的默认添加图像的方式)添加图像来表示按钮时,与添加直线位图相比,加载表单需要大约100毫秒的时间。比较:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));

以下代码快约100ms(速度增益不适用于其他图像):

button1.Image = new Bitmap("myimage.png");

我想知道为什么前者如此缓慢,如果我能以某种方式加速它?我宁愿使用前者,因为它将图片嵌入到exe中(我不想单独提供所有图像)。

该问题适用于所有允许添加图像的控件(我使用图片框和按钮进行测试)。

1 个答案:

答案 0 :(得分:2)

尝试preConstruct System.ComponentModel.ComponentResourceManager资源。 可能额外的100ms用于构造ComponentResourceManager对象