2010-10-08 70 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