2012-05-23 33 views
2

我必須使用DrawingContext.DrawImage方法繪製位圖圖像。使用DrawImage方法的空白屏幕

使用下的所有代碼工作正常:

BitmapImage myImage = new BitmapImage(); 
myImage.BeginInit(); 
myImage.UriSource = new Uri("image.png", UriKind.Relative); 
myImage.EndInit(); 

Rect area = new Rect(new Size(myImage.PixelWidth, myImage.PixelHeight)); 
DrawingVisual myVisual = new DrawingVisual(); 

using (DrawingContext context = myVisual.RenderOpen()) 
{ context.DrawImage(myImage, area); } 

但是,只有當圖像不超過2Mb的約,即區(myImage.PixelWidth x myImage.PixelHeight)不大於10000x10000大。在這種情況下,屏幕保持空白,並且不會引發任何異常(所以我不能分辨是否有錯誤)。

我該如何解決這個問題? 謝謝。

+0

你檢查,如果「大」圖像裝入正確,是否符合預期,即PixelWidth和PixelHeight? – Clemens

+0

有效當我繪製「大」圖像PixelWidth和PixelHeight是1 ... – gliderkite

回答

2

看起來大圖像在渲染時尚未加載。請嘗試以下方法加載位圖:

BitmapSource myImage = BitmapFrame.Create(
    new Uri("image.png"), 
    BitmapCreateOptions.None, 
    BitmapCacheOption.OnLoad); 

還是這個絕望的嘗試:

using (Stream fileStream = new FileStream("image.png", FileMode.Open)) 
{ 
    BitmapSource myImage = BitmapFrame.Create(
     fileStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); 
} 
+0

PixelWidth和PixelHeight始終爲1 – gliderkite

+0

請參閱編輯。如果它仍然不起作用,我會馬上刪除它。 – Clemens

+0

我不能使用CopyTo,我正在研究3.5 .NET框架,任何替代方案? – gliderkite