我正在使用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;
我从原始屏幕截图中裁剪了相同的区域。
答案 0 :(得分:1)
这种情况正在发生,因为DecodePixelHeight / Width只会将图像解码为该大小。实际呈现的大小取决于其他变量(宽度和高度)。
Lumia 920的结果不同的事实是因为该设备具有WXGA(768x1280)分辨率,其他所有设备都具有WVGA分辨率(480x800)。
这会导致图像重新缩放以适应WXGA手机分辨率的宽度/高度。
我不太确切知道你要完成什么,但我想你正在将从该函数返回的图像分配给某种控件。我的建议是你给那个控件一个固定的宽度和高度,看看它是如何工作的。