当我在表单上将图像设置为 BackgroundImage 时,为什么表单需要很长时间才能加载以及为什么我的应用程序通常会变慢?有什么办法可以对抗这个吗?
问问题
2185 次
3 回答
2
您在 Windows 上使用 Visual Studio。
Visual Studio 中的普通 Windows 窗体存在一个常见问题。当一个高清图像被渲染时(不需要太多的高清图像,或者它也可以是中等的),你的应用程序将开始滞后。
我的应用程序也遇到了这个问题。
如果您的应用程序上的任何控件具有DoubleBuffered属性,那么您需要将其设置为 true。
不幸的是,这个解决方案并不能完全解决您的问题。
如果您正在制作一个涉及大量图像的应用程序,我建议您在WPF中编写您的应用程序。幸运的是,WPF 表单已经解决了这个问题,因此您无需执行任何其他操作来调整应用程序中图像的性能。
祝你好运!
于 2013-04-03T12:01:16.617 回答
1
不幸的是,如果您希望表单始终具有背景图像(尤其是在第一次显示时),那么如果图像很大,则您无法采取任何措施来抵消表单的加载时间。
如果您对显示的表单以及加载时应用的图像感到满意,您可以打开表单,然后在后台线程中加载图像并在获得时应用它:
Task<Image>.Factory.StartNew(() =>
{
return Bitmap.FromFile("image path here");
}).ContinueWith(t =>
{
this.BackgroundImage = t.Result;
}, TaskScheduler.FromCurrentSynchronizationContext());
我们也不要忘记调整相关图像大小的明显解决方案,以便加载不会花费很长时间,或者只是将角落部分放入没有边框的图片框中。
于 2013-04-03T12:01:23.163 回答
0
确保背景图像设置在选项“拉伸”而不是“平铺”中。根据我的经验,“平铺”布局需要额外的时间来加载。
于 2016-06-30T12:28:56.597 回答