我想在窗口上显示大小不超过 245px * 135px 的许多图像,图像可以有不同的大小,所以,我想调整至少宽度 > 245 或高度 > 135 的图像大小。我尝试这样做:
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 的情况下做到这一点?