2012-05-23 5 views
2

DrawingContext.DrawImage 메서드를 사용하여 비트 맵 이미지를 그려야합니다. 모든 아래의 코드를 사용하여DrawImage 메서드를 사용하는 빈 화면

제대로 작동 : 이미지에 대해 2MB의 초과하지 않는

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); } 

그러나 경우에만, 즉 영역 (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

편집을 참조하십시오. 난 여전히 그것을 작동하지 않는 경우 immediatly 그것을 삭제합니다. – Clemens

+0

CopyTo를 사용할 수 없습니다. 3.5 .NET Framework, 모든 대안에서 작업하고 있습니까? – gliderkite