当我在我的表单上将图像设置为BackgroundImage时,为什么表单需要很长时间才能加载,为什么我的应用程序一般会变慢?有什么方法可以解决这个问题吗?
答案 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;布局需要额外的时间来加载。