2010-10-08 68 views
2

我正在制作一个Windows Phone 7应用程序,它涉及从Web获取大图像并将其放入ScrollViewer供用户滚动浏览。尽管如此,我认为我正在达到BitmapImage的限制,因为图像似乎在2048像素的高度或宽度上被截断。Silverlight中的BitmapImage大小限制

这是Silverlight的一个已知限制BitmapImage并且在这种情况下是否有其他类可用于允许滚动浏览大图像?

谢谢

回答

7

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

尺寸限制:因为Windows 手机摄像头是500万像素,屏幕 分辨率比较小其他 平台, 可以处理的图像限制是2k x 2k像素。 任何大于 将自动取样在较低的 分辨率和图像将失去 一些丰富。处理图像 大于2k x 2k有 场景,您需要处理大于2k x 2k的图像 ,例如,照片 编辑或裁剪图像。在这些 方案中,可以将大于2k x 2k的图像 处理为 文件,然后显示适合2K x 2K的部分。您可以使用WriteableBitmap和 LoadJpeg的组合来执行此操作。例5 - LoadingLargeImages

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分辨率图像当:

  • 它显着较慢显示
  • 不要将其用于动画或平移场景。

WriteableBitmapEx的缩放方法也可以用于此任务,如果没有JPEG视频流可用。

+0

这是使用本地资源完成它的好方法,但您如何使用来自URL的远程图像进行建议呢? – RajenK 2010-10-08 13:47:51

+0

请参阅关于我的WriteabelBitmapEx库的编辑。 – 2010-10-15 19:27:49