2

我正在制作一个 Windows Phone 7 应用程序,该应用程序涉及从 Web 获取大图像并将其放入一个ScrollViewer供用户滚动浏览的应用程序中。不过,我认为我遇到了BitmapImage2048 像素的限制,因为图像的高度或宽度似乎都被截断了。

这是 Silverlight 的已知限制BitmapImage吗?在这种情况下是否有其他类可以使用以允许滚动大图像?

谢谢

4

1 回答 1

7

是的,有 2k x 2k 的限制。这是限制,解决方法在白皮书“为 Windows Phone 创建高性能 Silverlight 应用程序” http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3a8636bf-185f-449a- a0ce-83502b9ec0ec

尺寸限制:由于 Windows Phone 摄像头为 5 MP,并且屏幕分辨率小于其他平台,因此可以处理的图像限制为 2k x 2k 像素。任何比这更大的东西都会以较低的分辨率自动采样,并且图像会失去一些丰富性。处理大于 2k x 2k 的图像 在某些情况下,您需要处理大于 2k x 2k 的图像,例如照片编辑器或裁剪图像。在这些情况下,您可以将大于 2k x 2k 的图像处理成一个文件,然后显示适合 2K x 2K 的部分。您可以使用 WriteableBitmap 与 LoadJpeg 的组合来执行此操作。示例 #5 – 加载大图像

XAML:

<StackPanel>
    <Image Height="3000" Width="3000" Name="image1" Stretch="Fill" />
    <Button Content="Load" Height="70" Width="152" Click="btnLoad_Click" />
</StackPanel>

代码背后:

private void btnLoad_Click(object sender, RoutedEventArgs e)
{
    StreamResourceInfo sri = null;
    Uri uri = new                                                                           Uri("LoadJpegSample;component/Test3k3k.JPG", UriKind.Relative);
    sri = Application.GetResourceStream(uri);

    WriteableBitmap wb = new WriteableBitmap((int)this.image1.Width, (int)this.image1.Height);

    Extensions.LoadJpeg(wb, sri.Stream);
    this.image1.Source = wb;
}

使用大于 2k x 2k 图像时需要了解的事项:

  • 显示速度明显变慢
  • 不要将其用于动画或平移场景。

如果没有可用的 JPEG 流, WriteableBitmapEx的 Resize 方法也可用于此任务。

于 2010-10-08T13:03:24.147 回答