그래픽

Programming/API 2015. 6. 8. 22:04

GDI 오브젝트

 

GDI (Graphic Device Interface)

- 화면, 프린터 등의 모든 출력 장치를 제어하는 윈도우즈의 핵심 모듈 중 하나이다.

- 윈도우즈 프로그램에서의 모든 출력은 GDI를 통해서 화면과 프린터로 나가게 되어 있다.

 

GDI Object

- 그래픽 출력에 사용되는 도구를 말한다.

- 펜, 브러시, 비트맵, 폰트 등등이 모두 GDI 오브젝트이다.

 

GDI Object를 모아놓은 것이 DC이며 GDI는 현재 DC에 선택되어 있는 GDI 오브젝트를 사용한다.

사용자는 그래픽을 그리기 전에 DC에 적절한 오브젝트를 선택함으로써 원하는 모양과 속성으로

그래픽을 출력할 수 있다.

 

DC가 BeginPaint나 GetDC로 인해 처음 만들어졌을 떄 디폴트로 선택된 GDI 오브젝트가 다음과 같다.

 

 GDI 오브젝트

 핸들 타입 

 설명 

 디폴트

 펜

 HPEN

 선을 그을때

 검정색의 가는 실선

 브러쉬

 HBRUSH

 면을 채울때

 흰색

 폰트

 HFONT

 문자 출력에 사용되는 글꼴

 시스템 글꼴

 비트맵

 HBITMAP

 비트맵 이미지

 선택안됨

 팔레트

 HPALETTE

 팔레트

 선택안됨

 리전

 HRGN

 화면상의 영역

 선택안됨

 

 

 

Stock Object

- 윈도우즈가 기번적으로 제공하는 GDI 오브젝트를 말한다.

 

함수원형

HGDIOBJ  GetStockObject( int fnObject );

 

fnObject 인수에 사용하고자 하는 StockObject를 지정하는데 사용가능한 스톡 오브젝트

 

 fnObject

 설명

 BLACK_BRUSH

 검정색 브러시

 GRAY_BRUSH

 회색

 NULL_BRUSH

 투명

 WHITE_BRUSH

 흰색

 DKGRAY_BRUSH

 짙은 회색

 LTGRAY_BRUSH

 옅은 회색

 DC_BRUSH

 색상 브러쉬. SetDCBrushColor함수로 설정

 BLACK_PEN

 검정색 펜

 WHITE_PEN

 흰색 펜

 

 NULL_PEN

 투명 펜

 DC_PEN

 색상 펜. SelfDCPenColor 함수로 설정

 ANSI_FIXED_FONT

 고정폭 폰트

 ANSI_VAR_FONT

 가변폭 폰트

 DEFAULT_PALETTE

 시스템 팔레트

 

 

 

색상

 

윈도우즈에서 색상을 표현하는 방법

 

윈도우즈에서는 색상값을 표현하기 위해서 COLORREF라는 데이터형을 사용한다.

 

typedef DWORD COLORREF;

 

COLORREF는형은 부호없는 32비트 크기의 정수형이며, 8비트씩 빨간색, 초록색, 파란색의

농도를 나타내고 상위 8비트는 사용되지 않는다.

 

각 색상의 요소는 1바이트의 크기를 가지므로 0~255까지의 농도를 표현할 수 있고

이 색상 요소의 혼합에 의해 색상 하나가 만들어진다.

 

 

 

B

G

 

COLORREF형은 32비트 정수일 뿐이므로 16진수로 직접 표현할 수 있다.

 

 

 

펜은 선을 그을 떄 사용되는 GDI Object이다.

HPEN CreatePen( int fnPenStyle, int nWidth, COLORREF crColor);

 

fnPenStyle

- 그려질 선의 모양을 지정한다.

- 이 값을 변경하면 실선뿐 아니라 다양한 형태의 선을 만들 수 있다

- PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT

 

nWIdth

- 선의 폭을 지정한다.

 

crColor

- 선의 색상을 지정한다.

 

리턴값

- 새로 만든 펜의 핸들이 리턴된다.

'Programming > API' 카테고리의 다른 글

LPARAM과 WPARAM  (0) 2015.06.09
무효화 영역  (0) 2015.06.09
마우스 입력  (0) 2015.06.08
그래픽 출력, 메세지 박스  (0) 2015.06.08
문자열 출력  (0) 2015.06.08
admin