我正在开发一个WPF应用程序,它有多个画布和大量按钮。用户可以加载图像以更改按钮的背景。
这是我加载图像到BitmapImage对象中的代码
bmp = new BitmapImage();
bmp.BeginInit();
bmp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.UriSource = new Uri(relativeUri, UriKind.Relative);
bmp.EndInit();
在 EndInit() 期间,应用程序的内存会急剧增长。
有一件事可以让情况变得更好(但并不能真正解决问题),那就是添加:
bmp.DecodePixelWidth = 1024;
1024是我画布的最大尺寸。但我应该只针对宽度大于1024的图像进行此操作-那么如何在EndInit()之前获取宽度?