반응형
WPF 프로젝트 생성
화면캡처에 필요한 Bitmap 등을 사용하기 위해서는 System.Drawing dll 이 필요하다.
하지만, WPF 에서는 기본 DLL 이 아니므로
- [프로젝트] 메뉴 > [참조추가]에서 System.Drawing 을 추가
한다.
XAML 화면그리기
위와 같이 간단하게 Button 하나와 Image 를 추가한다.
- Button 의 자원 ID 는 btnCapture
- Image 의 자원 ID 는 imgCapture
라 지정했다.
cs 작성
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows;
using System.Windows.Media.Imaging;
namespace SimcityBuilditMacro
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 캡쳐
// 비교
}
private void BtnCapture_Click(object sender, RoutedEventArgs e)
{
ScreenCapture();
}
public void ScreenCapture()
{
// 주화면의 크기 정보 읽기
int width = (int)SystemParameters.PrimaryScreenWidth;
int height = (int)SystemParameters.PrimaryScreenHeight;
// 화면 크기만큼의 Bitmap 생성
using (Bitmap bmp = new Bitmap(width, height, 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);
// Bitmap 2 BitmapImage
// Image에 캡처한 이미지를 뿌려주기 위해 Bitmap을 BitmapImage로 변환한다.
using (MemoryStream memory = new MemoryStream())
{
bmp.Save(memory, ImageFormat.Bmp);
memory.Position = 0;
BitmapImage bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.StreamSource = memory;
bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
bitmapimage.EndInit();
imgCapture.Source = bitmapimage;
}
}
}
}
}
결과 화면
캡처 버튼을 누르면 위와 같이 캡처가 되는 것을 확인 할 수 있다.
반응형
'C - C++ - C# - Form - WPF' 카테고리의 다른 글
[빠르게 보는 WPF] WPF MediaElement 를 이용한 미디어 / 비디오 / 동영상 재생 (1) | 2019.07.16 |
---|---|
[빠르게 보는] C# WPF 프로그램 영역 캡쳐 / 프로세스 캡쳐 (2) | 2019.07.09 |
[빠르게 보는] WPF 폴더 선택 다이얼로그 (0) | 2019.07.05 |
C# WPF user32.dll 을 이용하여 전역 키 후킹하기, 핫키 등록하기 / 키 보내기 (2) API를 이용한 예제보기 (2) | 2019.03.21 |
C# WPF user32.dll 을 이용하여 전역 키 후킹하기, 핫키 등록하기 / 키 보내기 (1) API와 상수보기 (0) | 2019.03.21 |
WRITTEN BY
,