【发布时间】:2014-07-28 13:34:45
【问题描述】:
我正在开发一个 Windows phone 8 应用程序,我需要在其中显示一些图像。我使用了一个图像控件(未指定尺寸)并传递了一个 ImageUri(指向本地存储),并在转换器中返回了一个 BitmapImage,每个 DecodePixelHeight/Width 设置为 300。除了在诺基亚 Lumia 920 手机(我在 Lumia 520、Lumia 820、HTC 8S 和 Lumia 920 中测试过)外,它工作正常。在 920 中进行测试时,在 image_loaded 事件中,即使图像源的 DecodePixelheight/Width 每个显示为 300,图像的 ActualHeight/Width 每个也为 480。为什么会这样? (隔离存储中的图像尺寸也是 300x300)。
这是我的转换器代码:
BitmapImage image = new BitmapImage();
image.DecodePixelType = DecodePixelType.Logical;
image.CreateOptions = BitmapCreateOptions.BackgroundCreation;
image.CreateOptions = BitmapCreateOptions.DelayCreation;
image.DecodePixelHeight = 300;
image.DecodePixelWidth = 300;
using (var stream = LoadFile(path.ToString()))
{
if (stream != null)
{
image.SetSource(stream);
}
}
return image;
我从两个原始屏幕截图中裁剪了相同的区域。
【问题讨论】:
-
如果您不希望图像重新缩放以更好地适应 Lumia 920 等高分辨率屏幕,请使用 DecodePixelType.Physical。
标签: c# image windows-phone-8