1

현재 쓰기 가능한 Bitmap 클래스에 WriteableBitmapEx extension을 사용하고 있습니다. 지금까지 모든 것이 이제는 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

잘 모르겠습니다. 수동으로 픽셀 단위로 블 리치 해보십시오. –