WPF 스크립 캡쳐 기능
반응형

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값을 가져와서 설정해주면 될 것으로 보인다.

반응형