노무현 전 대통령 서거 추모글 남기기

원문보기: http://feel2.kr/blog/5

윈도우즈에서 출력하기 위해 필요한 개념 및 텍스트 그래픽을 출력하는 방법에 대해 살펴 본다. 윈도우OS에서는 하드웨어 제조회사들이 MS에서 미리 정해놓은 사양에 따라 해당 하드웨어를 구동 할 수 있는 구동 프로그램(디바이스드라이버)를 작성하여 배포하며 프로그래머는 따라서 어떤 하드웨어가 컴퓨터에 달려있는지 신경 쓸 필요 없다. 따라서 윈OS는 출력을 디바이스 드라이버와 통신을 통해 하게된다.

GDI(Graphic Device Interface)는 선 그리기, 컬러 관리와 같은 그래픽 함수들을 구현하는 일을 담당하는 윈도우즈의 구성요소 디스플레이, 프린터, 기타장치에 대한 그래픽 출력을 위해 응용프로그램이 사용할 수 있는 함수와 그에 관련된 구조를 제공. GID와 관련된 파일은 GDI32.dll 이다.

GDI32.dll -> 디바이스 드라이버 -> 프린터, 화면 등

윈OS는 화면 출력하는 방법을 세세히 지정 할수 있다.
선이나 글자를 하나 출력하는데도 수많은 옵션을 지정 해야하며 이것을 일일이 지정하기에는 매우 번거롭다. 그래서 등장한 개념이 DC(Device Context)다.

DC는 그래픽과 관련된 모든 옵션을 모아둔 구조체이다.
그래서 윈OS는 출력장치에 무엇인가를 출력하기 위해서는 반드시  DC가 필요하다.
화면에 출력을 하려면 화면에 대한 DC 핸들을 얻어야 하며 프린터는 프린터 DC핸들을 얻어야 한다. 또한 한 화면에서도 윈도우마다 DC를 가지고 있다.
DC핸들은 출력대상을 나타내는 구분 번호!
모든 GDI 함수는 첫번째 인자로 DC핸들을 요구한다.

*DC에 설정되어 있는 옵션
선그리기(펜)
: 선을 그리거나 영역의 경계선을 그릴때 사용. 선의 두께, 색, 형태등 지정. 기본은 검은색 1픽셀 실선이다.
영역채우기(브러시) : 어떤 영역의 내부를 채울때 사용. 색, 패턴등을 지정. 기본은 흰색.
글꼴(폰트) : 문자를 출력할때 사용 색 모양 크기 지정. 디폴트는 시스템 폰트.
팔레트 : 화면에 출력할 수 있는 색에 제한을 받을 경우, 실제로 화면에 출력할 색의 수등을 설정
리전 : 임의의 도형을 그리는 것과 관련된 옵션을 설정
비트맵 : 비트맵 그림파일에 관한 옵션

윈OS에서 제공하는 DC에는 화면출력을 위한 디스플레이 DC, 프린터나 플로터 출력을 위한 프린터 DC, 비트맵출력을 위한 메모리 DC,  디바이스 정보를 얻기 위한 정보 DC등 4가지가 있다.

*DC를 얻고 해제하는 방법들
1. BeginPaint() 와 EndPaint() :
WM_PAINT 와 함께 사용
2. GetDC() 와 ReleaseDC() : 잠시 출력 할때 사용
3. CreateDC() 와 DeleteDC() : DC를 만들어 사용
4. GetWindowDC()와 ReleaseDC() : 비클라이언트 영역을 그리고자 할 때 WM_NCPAINT 메시지와 함께 사용
5. CreateIC()와 DeleteDC() : DC에 출력하지 않고 정보만 얻고자 할때 사용
6. CreateCompatibleDC()와 DeleteDC() : 이미있는 DC와 같은 또하나의 DC만들 때 사용. 보통 디스플레이를 이용한 메모리 DC를 만들 때 사용

Posted by Kelly Cook
,