더북(TheBook)

이제 실행을 해보자. 메뉴에서 [디버그] > [시작] 메뉴 항목을 선택하거나 또는 단축키 F5를 눌러 실행해보자. BmpShow 프로그램 내의 차일드 윈도우의 뷰 영역에서 마우스 왼쪽 버튼을 클릭하면 그림 3-15와 같이 lenna.bmp 파일의 영상이 출력되는 것을 확인할 수 있다. 마우스 버튼을 클릭할 때마다 영상이 겹쳐서 출력될 것이다. 그러나 BmpShow 프로그램이 다른 프로그램에 가려졌다가 나타나거나 차일드 프레임 창 크기를 변경하는 경우에는 lenna.bmp 영상이 모두 지워질 것이다. 이는 비트맵 출력을 OnDraw 함수가 아닌 다른 함수에서 수행하였기 때문이다. 영상을 항상 화면에 나타내고 싶다면 영상 출력 코드를 OnDraw 함수에 작성해야 한다. OnDraw에서 영상을 출력하는 방법에 대해서는 이 책의 5장에서 설명할 것이다.

그림 3-15 BmpShow 프로그램 실행 화면
Note | 데스크탑 윈도우 매니저(Desktop Window Manager)

MFC 프로그램에서 OnDraw가 아닌 곳에 그림을 그릴 경우, 그 창이 다른 창에 가려졌다가 다시 나타나면 그림이 사라진다. 그러나 최신 Windows 운영체제에서는 그림이 지워지지 않고 그대로 남아 있는 경우도 있다. 이는 데스크탑 윈도우 매니저(DWM, Desktop Window Manager)라는 기술이 사용되고 있기 때문이다. DWM이 사용되면 각각의 윈도우는 그림을 화면에 직접 그리는 것이 아니라 비디오 메모리 버퍼에 먼저 그리고, 이를 화면에 뿌리는 방식을 사용한다. BmpShow 프로그램이 다른 창에 가려졌다가 다시 나타나는 경우에도 비디오 메모리에 저장되어 있던 화면이 그대로 다시 나타나게 되므로 lenna.bmp 영상이 지워지지 않는다. 그러나 차일드 프레임 윈도우의 크기를 변경하면 뷰 영역을 다시 계산해서 그림을 그려야 하기 때문에 lenna 영상이 사라진다.

Note | Lenna 이야기

영상 처리 서적 및 프로그램에서 가장 많이 사용하는 테스트 영상은 lenna 영상이다. 이 영상은 원래 1972년 11월 미국 플레이보이 잡지에 소개된 스웨덴 출신의 모델 레나 소더버그(Lena Soderberg) 사진의 일부이다. 이 사진은 1973년 미국 한 대학에서 처음으로 테스트 영상으로 사용된 후부터 지금까지 많은 논문과 서적에서 널리 사용되고 있다. 이 영상은 사람의 얼굴을 포함하고, 균일한 영역, 음영 영역, 직선과 곡선 성분, 질감(texture) 성분들이 골고루 분포하고 있다는 장점이 있다. Lenna 영상에 대한 더 자세한 정보는 아래 웹 사이트에서 찾아볼 수 있다. 참고로 lenna 원본 영상은 다소 노출이 있으므로 유의하기 바란다.

http://www.lenna.org

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.