1

我目前使用WriteableBitmapEx extension作爲我可寫的Bitmap類。到目前爲止,所有的工作現在我正在WinRT項目中完成。我運行此代碼將位圖合併在一起。如何解決WriteableBitmap AccessViolationException

Windows.Storage.Pickers.FileSavePicker save = new Windows.Storage.Pickers.FileSavePicker(); 
save.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop; 
save.DefaultFileExtension = ".png"; 
save.FileTypeChoices.Add("PNG", new string[] { ".png" }); 
StorageFile filesave = await save.PickSaveFileAsync(); 
IOutputStream ab = await filesave.OpenAsync(FileAccessMode.ReadWrite); 

if (ab != null) 
{ 
     // await _inkManager.SaveAsync(ab); 

     var imageUri = new Uri("http://i.imgur.com/rbiLg5Z.gif"); 
     var fullSizeBitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage(imageUri); 
     // image.Source = fullSizeBitmap; 

     var file = await WebFile.SaveAsync(imageUri); 
     WriteableBitmap myTempImage = await new WriteableBitmap(1, 1).LoadAsync(file); 

     // error! 
     myImage.Blit(new Rect(0, 0, 20, 28), myTempImage, new Rect(0, 0, 20, 38)); 

現在在線myImage.Blit我得到一個未處理的異常訪問衝突。我真的不明白髮生了什麼事或者我做錯了什麼。所以幫助將不勝感激。

+0

上面沒有一些代碼缺失嗎?添加所有的,我們可能會得到這個排序:) –

回答

0

最有可能是源或目標WriteableBitmap的大小小於您傳遞的矩形。或者,您正在使用的其中一種方法可能存在錯誤。驗證您正在處理的位圖的PixelWidth/PixelHeight。

+0

我驗證了這一點,他們是相同的大小。然後我決定使用這個代碼來使用相同的圖像 myImage.Blit(new Rect(0,0,myImage.PixelHeight,myImage.PixelWidth),myImage,new Rect(0,0,myImage.PixelHeight,myImage.PixelWidth )); 然後我給它一次錯誤,然後我再次在同一個會話/實例中運行它,它沒有給我錯誤,而是另一個異常說沒有找到鍵......我在那裏失去了圖像和記憶有問題,但我不確定。 – rubsnick

+0

我不知道。嘗試手動blitting它 - 逐個像素。 –