화면, 프린터 등의 모든 출력 장치를 제어하는 윈도우즈 핵심 모듈중 하나이다.
즉, 출력을 위한 중앙 통제 센터 정도로 생각하자.
윈도우즈 프로그램에서의 모든 출력은 GDI 를 통해서 화면과 프린터로 나가게 되어 있다.
GDI 오브젝트 (GDI Object) 란?=> 그래픽 출력에 사용되는 도구를 말하며 펜 , 브러시 , 비트맵 , 폰트 등등이 모두 GDI 오브젝트 이다.
( 사람이 그림그릴때 쓰는 연필, 붓 등을 생각하면 된다 )
GDI 오브젝트를 모아놓은 것이 DC 이며 GDI 는 현재 DC 에 선택되어 있는 GDI 오브젝트를 사용한다.
그래서 사용자는 그래픽을 그리기 전에 DC 에 적절한 오브젝트를 선택함으로써 원하는 모양과 속성으로 그래픽을 출력할 수 있다. 즉 , 원하는 색상과 모양의 오브젝트를 만들고 DC 에 선택해 놓으면 이후부터 선택된 오브젝트의 속성대로 출력된다.
GDI 오브젝트는 내부적으로 일종의 구조체이겠지만 ,그 선언문이 공개되어 있지 않으므로 우리가 이 구조체를 볼 수도 없고 , 볼 필요도 없다. DC 가 BeginPaint 나 GetDC 함수로 의해 처음 만들어졌을 때 ,디폴트로 선택된 GDI 오브젝트는 다음과 같다.
| GDI 오브젝트 | 핸들 타입 | 설명 | 디폴트 |
|---|---|---|---|
| 펜 | HPEN | 선을 그을 때 사용 | 검정 가는 실선 |
| 브러시 | HBRUSH | 면을 채울 때 사용 | 흰색 |
| 폰트 | HFONT | 문자 출력 글꼴 | 시스템 글꼴 |
| 비트맵 | HBITMAP | 비트맵 이미지 | 선택 안됨 |
| 팔레트 | HPALETTE | 팔레트 | 선택 안됨 |
| 리전 | HRGN | 화면상의 영역 | 선택 안됨 |
보다시피 대체로 무난한 속성으로 설정되어 있다. 그래서 DC 에 별 다른 지정을 하지 않고 , 그냥 출력하면 디폴트 속성이 적용되어 위와 같은 속성이 적용된다.