为什么在我的表单上设置背景图像会增加加载时间?

时间:2013-04-03 11:50:04

标签: c# winforms image

当我在我的表单上将图像设置为BackgroundImage时,为什么表单需要很长时间才能加载,为什么我的应用程序一般会变慢?有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

您在Windows上使用Visual Studio。

Visual Studio中的普通Windows窗体存在一个常见问题。当渲染高清晰度图像时(不一定是高清图像太多,或者也可能是中等),您的应用程序将开始滞后。

我的应用程序也遇到了这个问题。

如果您的应用程序上的任何控件具有DoubleBuffered属性,则需要将其设置为true。

不幸的是,这个解决方案不能完全摆脱你的问题。

如果您正在制作涉及大量图像的应用程序,我建议您在WPF中编写应用程序。幸运的是,WPF表单已经解决了这个问题,因此您无需做任何其他事情来调整应用程序中图像的性能。

祝你好运!

答案 1 :(得分:1)

不幸的是,如果您希望表单始终具有背景图像(特别是首次显示时),那么如果图像很大,则无法阻止表单的加载时间。

如果您对正在显示的表单感到满意,然后在加载图像时应用该图像,则可以打开表单,然后在后台线程中加载图像并在获得它时应用它:

Task<Image>.Factory.StartNew(() =>
            {
                return Bitmap.FromFile("image path here");
            }).ContinueWith(t =>
                {
                    this.BackgroundImage = t.Result;
                }, TaskScheduler.FromCurrentSynchronizationContext());

让我们不要忘记调整相关图像大小的明显解决方案,以便加载时不需要太长时间,或只是将角落片放入没有边框的图片框中。

答案 2 :(得分:0)

确保在选项&#39; Stretch&#39;中设置了背景图像。而不是“平铺”。&#39;根据我的经验,&#39; Tile&#39;布局需要额外的时间来加载。