我正在创建一个Windows Phone 7应用程序,它涉及从Web获取大图像并将其放入ScrollViewer
以供用户滚动。不过,我认为我正在达到BitmapImage
的限制,因为图像似乎在高度或宽度上都被切割成2048像素。
这是Silverlight BitmapImage
的已知限制吗?在这种情况下是否还有其他类可以滚动浏览大图像?
由于
答案 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方法也可用于此任务。