2010년 1월 6일 수요일

[.NET Compact Framework-C#] 화면캡쳐-CopyFromScreen

.NET Compact Framework 에서 생략된 유용한 그래픽스 함수 중 하나인 CopyFromScreen...
기본 컨트롤들은 투명처리가 되지 않기 때문에 완벽하게 커버할 수 있는건 아니지만 CopyFromScreen이 있다면 팝업되는 컨트롤들은 어느정도 보이기에는 커버할 수 있다. 하지만 아쉽게도 컴팩트 버전에서는 생략되었다.
직접 개발한것은 아니지만 아래 소스는 Win32 API를 이용하여 같은 작동을 하도록 구현하였다.
출처는 기억이 잘 나지 않는다.(-_-)

작동 원리는 Device Context를 얻어오는 Win32 API인 GetDC 함수에 윈도우 핸들을 NULL을 넣으면 전체 화면의 Device Context를 얻게 되는데 같은 Win32 API인 BitBlt로 사용자 비트맵의 DC로 카피를 하는 방법으로 구현하였다.

자세한 사항은 소스를 참고하기 바란다.


응용을 하자면 BitBlt의 좌표를 조절하여 부분 화면을 캡처할 수도 있으며 Win32 API중의 하나인 AlphaBlend 함수를 이용하여 배경의 명도를 조절하거나 반투명 처리가 된 이미지 추출도 가능하니 관심있는 개발자들은 시도해보길 바란다.

댓글 없음:

댓글 쓰기