我希望在窗口上显示大小不超过245px * 135px的许多图像,图像可以是不同的大小,因此,我想调整图像的大小,其至少具有宽度> 245或高度>我试着这样做:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(filepath);
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.EndInit();
if (bi.Width > bi.Height)
{
bi.DecodePixelHeight = Convert.ToInt32(bi.Height * (245 / bi.Width));
bi.DecodePixelWidth = 245;
}
else
{
bi.DecodePixelWidth = Convert.ToInt32(bi.Width * (135 / bi.Height));
bi.DecodePixelHeight = 135;
}
但是DecodePixelXXX是0,因为我应该在EndIint()之前完成它。但是我不能在EndInit之前做到这一点,因为我还不知道Width / Height。如何在不将整个图像加载到具有最高性能的BitmapImage的情况下进行操作?