我正在制作一个Windows Phone 7应用程序,它涉及从Web获取大图像并将其放入ScrollViewer
供用户滚动浏览。尽管如此,我认为我正在达到BitmapImage
的限制,因为图像似乎在2048像素的高度或宽度上被截断。Silverlight中的BitmapImage大小限制
这是Silverlight的一个已知限制BitmapImage
并且在这种情况下是否有其他类可用于允许滚动浏览大图像?
谢谢
我正在制作一个Windows Phone 7应用程序,它涉及从Web获取大图像并将其放入ScrollViewer
供用户滚动浏览。尽管如此,我认为我正在达到BitmapImage
的限制,因为图像似乎在2048像素的高度或宽度上被截断。Silverlight中的BitmapImage大小限制
这是Silverlight的一个已知限制BitmapImage
并且在这种情况下是否有其他类可用于允许滚动浏览大图像?
谢谢
是的,有一个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视频流可用。
这是使用本地资源完成它的好方法,但您如何使用来自URL的远程图像进行建议呢? – RajenK 2010-10-08 13:47:51
请参阅关于我的WriteabelBitmapEx库的编辑。 – 2010-10-15 19:27:49