2011-02-19 3 views
36

가능한 복제를 사용하여 스크린 샷을 캡처 : 나는 특정 버튼을 누르 때마다 현재 화면의 스냅 샷을 캡처 응용 프로그램을 만들 필요가
How May I Capture the Screen in a Bitmap?은 .NET에게

.

많은 검색을했지만 현재 창을 캡처하는 방법 만 찾았습니다.

.NET에서이 작업을 수행하는 방법을 알려주십시오.

우리는 인쇄 화면을 누르고 페인트를 사용하여 이미지를 저장하여 수동으로이 작업을 수행 할 수 있습니다. 나는 똑같은 일을해야하지만, 나는 그 일을하기를 원한다.

+0

@searock - 중복이 아닙니다. 나는 그것을 보았습니다 ...하지만 반투명 한 창이었고 작업 표시 줄을 포함하여 전체 화면을 촬영해야했습니다 ... 다시 확인하십시오. –

+0

@Bhavik Goyal 당신은 오해하고 있습니다. 제목은 바탕 화면의 스크린 샷을 찍고 반투명 한 경우 창을 표시하는 것을 의미합니다. No offense :) – Searock

+0

하지만 내 창이 상단에 있고 전체 데스크톱을 둘러싼 경우를 의미합니다. 하지만 내 창을 최소화했거나 창을 숨긴 경우에도 필요합니다. –

답변

48

.NET Framework를 사용하여 스크린 샷을 찍는 것은 가능합니다. 가장 간단한 방법은 새 Bitmap 개체를 만들고 Graphics.CopyFromScreen method을 사용하여 개체를 그립니다.

샘플 코드 :

using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
              Screen.PrimaryScreen.Bounds.Height)) 
using (Graphics g = Graphics.FromImage(bmpScreenCapture)) 
{ 
    g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, 
        Screen.PrimaryScreen.Bounds.Y, 
        0, 0, 
        bmpScreenCapture.Size, 
        CopyPixelOperation.SourceCopy); 
} 

주의해야 :이 방법은 계층 창 제대로 작동하지 않습니다. Hans Passant의 대답 here은 스크린 샷에있는 복잡한 방법을 설명합니다.

+3

Windows 7+에서 계층화 된 창에 대해 제대로 작동한다고 생각한다. . (해킹이 많이 발생했습니다.) – Ryan

+0

변경 표시 설정 ** 모든 항목의 크기를 ** ** ** **로 변경하면 코드가 화면의 일부만 캡처 할 수 있습니다. 해결하는 방법? –