GDI(Graphic Device Interface)
윈도우가 하드웨어를 제어할 수 있도록 응용 프로그램에 제공하는 모든 기능
응용 프로그램과 디바이스 드라이버의 중간 역활
응용 프로그램에 대한 장치 독립적인 그래픽 동작 수행
GDI 기본 구성 요소
선과 곡선 (직선, 사각형, 타원, 호, 등)
채워진 영역 (브러시 개체를 이용 - 색상, 패턴, 비트맵 이미지)
비트맵 (디스플레이 장치의 픽셀과 일치하는 직사각형 배열, 래스터 그래픽의 기본적인 도구)
택스트
DC(Device Context)
1)핸들 역활
애플리케이션과 출력 장치를 연결하는 역활
애플리케이션이 출력에 대한 허가를 얻고, 그려지는 영역을 결정하는 역활
2)GDI에 의해 내부적으로 유지되는 데이터 구조
여러 가지 그래픽 속성에 대한 값(텍스트 속성/색상, 매핑 모드, 글꼴)을 가짐
DC를 사용할 경우 독립적인 하드웨어 출력을 할 수 있어 출력장치에 상관없이 동일한 방법으로 출력을 설정할 수 있음
DC를 사용후 해제(리소스 반환)해야함
DC를 얻는 방법
- OnDraw(), OnPaint()함수 호출시
윈도우나 클라이언트 영역이 다시 그려져야 할 경우 수행. MFC 내부 코드에 DC를 해제함 - GetDC() 함수 호출시
반환된 포인터 값을 사용. ReleaseDC()함수를 호출하여 해제해야함.
일시적으로 DC를 얻는 방법이기 때문에 윈도우 크기가 변하면 내용이 사라짐 - CClinetDC 클래스 사용시
CDC 클래스의 파생 클래스. DC 생성/해제를 자동적으로 수행
윈도우에 대한 핸들 값 필요. 일시적으로 윈도우의 클라이언트 영역에서 그래픽 개체를 사용할 경우 사용 - CWindowDC 클래스 사용시
윈도우 영역에 그래픽 요소를 출력할 때 사용
GetWindowDC()함수를 이용하여 CWindowDC 클래스의 인스턴스를 포인터형태로 넘겨 받아 사용
ReleaseDC()함수로 해제해야함
GDI 객체 사용 방법
- GDI 객체 생성 - 클래스의 Create계열 함수 사용
- DC에 객체 등록 - SelectObject()함수로 등록. 기존 설정된 객체는 포인터로 저장됨
- DC를 사용하여 그래픽 출력
- 이전 객체로 환원
- 객체를 삭제 - DeleteObject()함수 이용
[출처] (MFC) 그래픽 객체의 사용|작성자 길가다주은노트북
'프로그래밍 > C++' 카테고리의 다른 글
(MFC) 대화상자 (0) | 2016.07.09 |
---|---|
(MFC) 메시지 처리 (0) | 2016.07.09 |
(C++) 클래스와 객체 (0) | 2016.07.09 |
(C++) Simple 한/영사전 예제 (0) | 2016.07.09 |
(C++) 상속을 이용한 간단한 계산 클래스 구현 (0) | 2016.07.09 |