C# - SharpDX + DXGI를 이용한 윈도우 화면 캡처 라이브러리
지난 글에 써 둔,
C# - SharpDX + DXGI를 이용한 윈도우 화면 캡처 소스 코드
; https://www.sysnet.pe.kr/2/0/11400
코드를 NuGet에 라이브러리로 등록해 두었습니다. ^^
DxgiScreenCapture
; https://www.nuget.org/packages/DxgiScreenCapture/
그래서 그냥 참조만 추가하고,
Install-Package DxgiScreenCapture -Version 1.0.0
Windows Forms 프로젝트에서 다음과 같이 사용하면 됩니다.
using DxgiScreenCapture;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
// Install-Package DxgiScreenCapture -Version 1.0.0
public partial class Form1 : Form
{
readonly ScreenCapture _screenCapture;
public Form1()
{
InitializeComponent();
_screenCapture = new ScreenCapture(_viewBox, new System.Drawing.Rectangle(200, 200, 500, 500));
_screenCapture.Captured += _screenCapture_Captured;
}
private void _screenCapture_Captured(object sender, CapturedEventArgs e)
{
IntPtr srcPtr = e.Data.DataPointer;
// 캡처한 이미지의 BGR 데이터 추출
for (int i = 0; i < e.Data.Length; i += 4)
{
byte b = Marshal.ReadByte(srcPtr);
byte g = Marshal.ReadByte(srcPtr + 1);
byte r = Marshal.ReadByte(srcPtr + 2);
}
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
_screenCapture.Dispose();
base.OnFormClosing(e);
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Cancel) // Ctrl + C
{
_screenCapture.SignalToCapture();
}
base.OnKeyPress(e);
}
}
}
프로젝트 소스 코드와 이 글의 예제 프로젝트 모두 github에 있습니다.
stjeong / DxgiScreenCapture
; https://github.com/stjeong/DxgiScreenCapture
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]