GDI란(Graphics Device Interface)?
윈도우 OS를 위해 하드웨어 제조회사들이 MicroSoft에서 미리 정해놓은 사양에 따라 하드웨어를 구동할 수 있는 구동 프로그램인 Device Driver를 작성하여 배포합니다.
그렇기에 윈도우 설치시 그래픽카드와 맞는 Device Driver를 자동으로 윈도우가 설정합니다.
응용프로그램이 그래픽을 출력하고자 한다면 윈도우에 요청을 하게되고 윈도우는 Device Driver를 호출하면
Device Driver이 하드웨어를 구동시키게 됩니다.
(Application -> Windows -> Device Driver -> Graphic Card)
이렇게 되면 하드웨어의 종류와 관계없이 항상 동일한 명령어를 이용하여 그래픽을 출력할 수 있어 하드웨어에
독립적인 작업이 가능해집니다.
GDI는 Windows 운영체제가 응용프로그램에 제공하는 그래픽 출력 API 입니다.
(Windows가 하드웨어를 제어할 수 있도록 응용 프로그램에 제공하는 모든 기능[함수, 구조 등]을 일컬어 GDI라고 합니다.)
즉 GDI는 응용프로그램과 Device Driver의 중간 역할을 하는 존재입니다.
프로그래머 입장에서는 응용프로그램 제작시 GDI를 사용해서 그래픽을 출력하면 되기에
그래픽 카드가 RTX2060이던 GTX1080이던 이번에 새로나온 RTX3080이던 관계가 없다는 얘기죠.
GDI를 사용하면 선 두께, 색상, 위치, 도형 등 다양한걸 세세하게 제어할 수 있습니다.
설정히 자세하기에 세세하게 제어 가능하단 장점이 있지만 간단히 제어하고 싶을땐 번거롭고
오히려 단점이 될 수 있습니다.
그래서 이것을 간편화 하기 위해 DC(Device Context)라는 개념을 도입하게 됩니다.
DC(Device Context)
DC란 윈도우 응용프로그램에서 화면 출력을 위해 출력 속성을 정의하는 구조체(struct) 입니다.
즉, 화면 출력을 위해 여러 속성값들을 모아놓은 상자라고 보시면 됩니다.
이 글을 읽는 분들은 프로그래밍을 어느정도 아셔서 추가 개념을 공부하러 오신다는 가정하에 작성하고 있지만
구조체의 개념에 대해 궁금하신 분들은 다음 링크를 참고하시기 바랍니다.
기본 옵션값으로 출력이 가능하고 이 옵션값을 변경하여 다르게 출력도 가능합니다.
그렇기에 윈도우는 화면에 출력할때 반드시 DC가 필요합니다.
화면에 출력을 하려면 화면에 대한 DC 핸들을 얻어야 하고 프린터는 프린터 DC 핸들을 얻어야 합니다.
DC 핸들은 출력 대상을 나타내는 구분 번호입니다.
모든 GDI 함수는 첫번째 인자에 DC핸들을 요구합니다.
DC는 기본적으로 GetDC(), ReleaseDC()를 이용해 DC를 얻고 사용후 해제하는 작업을 하는게 정석입니다.
DC의 다양한 속성은 아래 링크와 인터넷을 참고하시길 바랍니다..
<참고문헌>
blog.naver.com/pigeonkim/140038936613
'프로그래밍' 카테고리의 다른 글
현재 프로그래밍 공부 방침 (0) | 2022.01.31 |
---|