2016-09-26 7 views
0

두 개의 제어 이미지보기와 캔버스가 있습니다. 이미지 위에 나는 사각형을 그리는 중입니다. 스크린 샷을 찍는 동안에는 사각형이 아닌 이미지 만 가져옵니다. 코드 아래 사용WPF의 ScreenShot

은 내가

int Width = (int)canvas1.RenderSize.Width; 
      int Height = (int)canvas1.RenderSize.Height; 
RenderTargetBitmap renderTargetBitmap = 
new RenderTargetBitmap(Width, Height, 96, 96, PixelFormats.Pbgra32); 
      renderTargetBitmap.Render(canvas1); 
      PngBitmapEncoder pngImage = new PngBitmapEncoder(); 
      pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap)); 
      using (Stream fileStream = File.Create(filePath)) 
      { 
       pngImage.Save(fileStream); 

      } 

난 이미지 만 이미지와 캔버스를 대체하고있는 경우가 오는 검은 이미지를 얻고있다. 두 컨트롤이 모두 포함 된 스크린 샷을 가져 오는 방법은 무엇입니까?

+0

모든 이미지, 이미지가있는 캔버스 및 이미지 위에 사각형을 하드 코딩했습니다. Button.Click 내 코드 괜찮아. – AnjumSKhan

+0

님께 서 스크린 샷을 찍을 수 있습니까? –

+0

사각형으로 이미지를 저장할 수 있습니다. – AnjumSKhan

답변

1

render 스크린 샷을 찍기 전에 렌더링 완료를 요청한 후 no-op입니다. 또한 뷰포트 에 그려진 사각형을 볼 수 있으며 스크린 샷에만 나타나지 않는다고 가정합니다. 사각형의 색상이 이미지 배경과 다른지 확인하십시오.

renderTargetBitmap.Render(canvas1); 
//no-op for rendering to complete before taking screenshot. 
_dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { })); 
//screenshot code here. 
+0

캔버스가있는 이미지 뷰가 있습니다. 캔버스 위에 직사각형을 그리는 중입니다. 이미지 만 캡쳐 화면에 찍히고 있습니다. 위의 솔루션은 나에게 도움이되지 않습니다. –