반응형
WPF에서 스크린 캡쳐
WPF에서 스크린 캡쳐는 기본적으로 위의 윈폼에서의 스크린 캡쳐와 같다. 즉, 화면크기 만큼의 Bitmap 객체를 할당하고, 여기에 Graphics의 CopyFromScreen() 메서드를 사용하여 화면을 복사해서 넣으면 된다. 단 화면 크기를 구하는 System.Windows.Forms.Screen 을 WPF에서 사용하지 않고 대신 System.Windows.SystemParameters.PrimaryScreenWidth와 SystemParameters.PrimaryScreenHeight 를 사용하게 된다.
코드
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows;
namespace ScreenCopyWpf
{
class ScreenClass
{
public static void ScreenCopy()
{
// 주화면의 크기 정보 읽기
int width = (int)SystemParameters.PrimaryScreenWidth;
int height = (int)SystemParameters.PrimaryScreenHeight;
// 화면 크기만큼의 Bitmap 생성
using (Bitmap bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
// Bitmap 이미지 변경을 위해 Graphics 객체 생성
using (Graphics gr = Graphics.FromImage(bmp))
{
// 화면을 그대로 카피해서 Bitmap 메모리에 저장
gr.CopyFromScreen(0, 0, 0, 0, bmp.Size);
}
// Bitmap 데이타를 파일로 저장
bmp.Save("test.png", ImageFormat.Png);
}
}
}
}
해당 코드는 메인 화면(듀얼모니터인 경우 1개)의 모든 화면을 캡쳐하는 코드..
만약 해당 S/W만 캡쳐하려한다면 Width, Height부분을 window의 position값을 가져와서 설정해주면 될 것으로 보인다.
반응형