2013-07-20 4 views
0

빈 화면이 나는 스크린 샷을 얻기 위해 다음 코드를 사용WPF 대신 스크린 샷

public static BitmapSource ToBitmapSource() 
    { 
     using (var screenBmp = new Bitmap(Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenWidth), 
      Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenHeight), 
      System.Drawing.Imaging.PixelFormat.Format32bppArgb)) 
     { 
      using (var bmpGraphics = Graphics.FromImage(screenBmp)) 
      { 
       bmpGraphics.CopyFromScreen(0, 0, 0, 
        0, screenBmp.Size); 
       return Imaging.CreateBitmapSourceFromHBitmap(screenBmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 
      } 
     } 
    } 

그것은 정상적인 창 잘 작동하지만 전체 화면 응용 프로그램 대신 화면에 검은 사각형을 얻는다. 왜, 어떻게 수정해야합니까? 감사합니다.

+0

당신은 창 내 테스트 결과 최대화 상태에있는 뜻 첨부? – Nitesh

+0

아니요, 게임과 같은 전체 화면 의미 –

+0

내 대답에 게시 된 코드가 맞지 않습니까? – Nitesh

답변

1

입력하신 코드는 정확합니다. 스크린 샷을 저장할 때 문제가 있다고 생각합니다. 당신이 블랙 스크린 샷을 얻을 때 그래서 나는 여기

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    PngBitmapEncoder png = new PngBitmapEncoder(); 
    png.Frames.Add(BitmapFrame.Create(ToBitmapSource())); // Calling your method 
    using (Stream stm = File.Create(AppDomain.CurrentDomain.BaseDirectory + "screenshot.png")) 
    { 
     png.Save(stm); 
    } 
} 

enter image description here