Silverlight中的BitmapImage大小限制

时间:2010-10-08 12:38:16

标签: silverlight windows-phone-7 bitmapimage

我正在创建一个Windows Phone 7应用程序,它涉及从Web获取大图像并将其放入ScrollViewer以供用户滚动。不过,我认为我正在达到BitmapImage的限制,因为图像似乎在高度或宽度上都被切割成2048像素。

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

由于

1 个答案:

答案 0 :(得分:7)

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

中进行了描述。
  

大小限制:自Windows以来   手机摄像头是5 MP和屏幕   分辨率小于其他分辨率   平台,图像的限制   可处理的是2k x 2k像素。   任何比这更大的东西   自动采样在较低的位置   分辨率和图像将丢失   一些丰富。处理图像   大于2k x 2k有   您需要处理的场景   大于2k×2k的图像,例如照片   编辑器,或裁剪图像。在那些   方案,您可以处理图像   大于2k x 2k的a   文件,然后显示一部分   适合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图像:

     
      
  • 显示速度要慢得多
  •   
  • 请勿将其用于动画或平移场景。
  •   

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