• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

팁사용기

[팁] ScreenCapture 예제

  • - 첨부파일 : ScreenCapture.zip (6.0K) - 다운로드

본문

안녕하세요? 미쉐린 김성준입니다.
이번에는 화면을 캡춰하는 것을 알아보도록 하겠습니다.
화면 캡춰는 의외로 간단한데 리얼베이직의 rgbSurface 클래스를 이용해서 캡춰할 수 있습니다.
Picture 클래스에도 하나의 속성을 포함되어있는 rgbSurface 클래슨는 픽셀단위로 그래픽을 가져오고 비교할 수 있는 기능등이 있습니다. 또한 RGB 값을 변경하여 각각의 지정한 픽셀의 색상을 바꾸거나 하는 작업을 할 수 있ㅅ브니다.
예전에 rgbSurface 를 통해서 포토샵과 같은 필터를 개발하는 사람도 있었죠.
물론 그래픽 계산은 제가 잘 못하기 때문에 그런것은 건너뛰고 간단한 화면 캡처하는 것을 알아보도록 하겠습니다.
rgbSurface 에 대해서 자세한 사항은 LanguageReferences 를 참조하시기 바랍니다.^^;;

여튼 화면 캡춰의 원리는 간단합니다. 화면의 픽셀을 하나하나 가져와서 그림에 붙여 넣는 것이죠.
또한 이 부분은 리얼베이직에서 제공하는 예제에도 가단하게 포함되어있던 내용입니다.
rgbSurface 클래스에는 pixel 이라는 함수가 있는데 이를 통해서 화면 해상도의 모든 픽셀을 하나하나 지정하고 가져올 수 있습니다.
대충 구성한 코드를 보면 다음과 같습니다.

for i = 0 to p.width-1
for j = 0 to p.height-1
s.Pixel(i,j) = System.pixel(i,j)
next
next

p 라는 것은 p as Picture 이라고 지정했다고 가정을 하여 p 라는 이미지의 사이즈만큼의 화면의 필셀을 s 라는 rgbSurface 클래스에 시스템 화면의 픽셀을 하나하나 가져오는 것을 말합니다.
앞부분이 빠져있어서 뭔 코드냐 하시는 분이 있을 수도 있기 때문에 앞부분을 추가해보도록 하죠.

dim i,j as integer
dim s as rgbSurface
dim p as Picture

self.Hide

p = newPicture(Screen(0).width,Screen(0).height,32)
s = p.rgbSurface

for i = 0 to p.width-1
for j = 0 to p.height-1
s.Pixel(i,j) = System.pixel(i,j)
next
next


보이죠? p 라는 Picture 클래스 객체, 그냥 그림변수라고 하죠..^^;;
여튼 p 는 그림을 말하는데 이 사이즈를 스크린 사이즈로 했습니다. Screen(0) 이라는 것은 메인 스크린을 말합니다. 모니터는 듀얼로 연결한 분들의 2번째 스크린은 Screen(1) 이라는 식으로 지정할 수 있는 것이죠. 여튼 하나라고 가정하고 그림은 화면 전체 사이즈로 설정을 했습니다.
그리고 그림의 rgbSurface 를 새롭게 생성한 rgbSurface 변수인 s 에 대입합니다.
그래서 이 s 에 시스템의 모든 픽셀을 추가해 줍니다.
물론

p.RGBSurface.Pixel(i,j) = System.pixel(i,j)

위와 같은 식으로 해도 똑같습니다.
별도로 rgbSurface 클래스를 이용할 수 있다는 것을 보여주는 것이니까요.
여튼 모든 픽셀을 하나하나 추가하면 그게 바로 화면 스크린이 되겠죠?
그럼 그림 변수인 p 를 보여줄 수 있는 화면의 배경이나 Canvas 배경에 넣어주면 됩니다.
따라서 윈도우라고 치면

self.backdrop = p

라는 식으로 구성하면 윈도우의 배경으로 들어가겠죠.
예제를 만들었으니 참고하시면 되구요.
화면에서 ScreenCapture 버튼을 누르면 전체 화면을 캡춰해서 윈도우의 배경에 뿌려주는 예제이빈다.
윈도우 사이즈는 캡춰뒤에 조절하면 되겠구요.
그럼 한번 확인해보시기 바랍니다.
그럼 좋은 하루 되세요


ps1. 질문이나 의문사항, 잘못된 점등은 michelin4k@yahoo.co.kr 로 연락주시기 바랍니다..^^;;
ps2. 예제는 Realbasic 2007 Release 5 버젼으로 제작되었습니다.

from michelin
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 5,044
가입일 :
2004-01-25 23:38:19
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 0

등록된 댓글이 없습니다.
전체 48 건 - 1 페이지