프로그래밍/API

DC(Device Context)의 개념

musiklo 2020. 12. 21. 14:16

윈도우즈 API 공부를 시작하기에 앞서 중요한 개념인 DC의 개념을 조금 알아간 후에 시작하려고 한다.

윈도우즈는 세 가지 동적 연결 라이브러리(DLL)로 구성되있는데, 메모리를 관리하고 프로그램을 실행시키는 KERNEL, 유저 인터페이스와 윈도우를 관리하는 USER, 그리고 화면 처리와 그래픽을 담당하는 GDI가 그것들이다. 윈도우즈 API 함수의 대부분은 이 세가지 DLL들이 제공하고 있다. 추력을 하려면 우리는 GDI(Graphic Device Interface) 모듈에 특별히 관심을 기울여야 하는데 화면으로 출력되는 모든 글자와 글미은 GDI를 통해서 출력되기 때문이다.

DC(Device Context)란 출력에 필요한 모든 정보를 가지는 데이터 구조체이며 GDI 모듈에 의해 관리된다. 문자열의 모양을 지정하는 폰트, 선의 색상과 굵기, 채움 무늬와 색상, 그리기 모드 등등이 모두 출력에 필요한 정보들이다. 화면 출력에 DC가 필요한 이유를 직관적으로 이해하기 위해 몇 가지 전형적인 예를 들어 설명해 보자.

화면에 선을 긋는 LineTo함수를 생각해보자.

선도 도형으로 인식된다. 선이라는 도형은 시작점과 끝점을 잇는 모든 점들의 집합으로 정의되므로 선을 긋기 위해서는 최소한 시작점과 끝점의 좌표가 필요하다. 한 점의 좌표는 X,Y값으로 구성된다는 것은 상식이며 따라서 LineTo(X1,Y1,X2,Y2)와 같은 식으로 함수를 호출하여 기본적인 선을 그을 수 있다. 기본 HDC에 들어있는 선의 시작점, 색상 굵기등의 정보가 들어있지 않다면 당신이 직접 코드를 짜고 그러한 번거로운 작업등을 해야하는데 그 작업들을 DC가 전부해주니 얼마나 편한것이 아닌가. DC의 개념을 간단하게 요약하자면 당신이 작업해나가는 대부분의 정보들을 저장하고 있는 기능이다.

'프로그래밍 > API' 카테고리의 다른 글

Windows API 기본 서식  (0) 2020.12.20