GGym's Practice Notes

GDI Object 본문

WinAPI

GDI Object

GGym_ 2020. 5. 9. 19:05

GDI (Graphic Device Interface)

GDI Object : 그래픽 출력에 사용되는 도구들 (펜, 브러시, 비트맵, 폰트)

 - 펜 : 선을 그을 때 사용

 - 브러시 : 면을 채울 때 사용

 - 비트맵 : 비트맵 파일

 

> GDI 오브젝트를 모아 놓은것 : DC -> 선, 면에 대한 정보가 다 있음. 현재 선택되어 있는 GDI 오브젝트 사용

> 그래픽을 그리기전에 DC에 적절한 오브젝트를 선택하고 원하는 모양과 속성으로 그래픽 출력

> GDI 오브젝트는 보통 Render()함수 내부에 구현

GDI 오브젝트는 핸들로 관리 : HPEN, HBRUSH, HBITMAP

 

GDI오브젝트를 바꾸어가면서 쓸때 순서를 유의

1 핸들 선언

2 GDI 오브젝트 만듬

3 DC선택 이전 핸들 저장

4 사용

5 선택 해제

6 삭제

 

 # 펜

선을 그을때 사용하는 GDI 오브젝트 

HPEN CreatePen(int iStyle, int cWidth, COLORREF color)
iStyle : PS_SOLID / PS_DASH / PS_DOT / PS_DASHDOT / PS_DASHDOTDOT
hdc = BeginPaint(hWnd, &ps);	// 핸들선언
HPEN hNewPen = CreatePen(PS_SOLID, 5, RGB(0, 0, 255));	// GDI 오브젝트 만듬
HPEN hOldPen = (HPEN)SelectObject(hdc, hNewPen);	// 이전 핸들 저장
Rectangle(hdc, 50, 50, 300, 200);	// 사용
SelectObject(hdc, hOldPen);	// 선택 해제
DeleteObject(hNewPen);	// 삭제
EndPaint(hWnd, &ps);

사용을 다한 펜/브러쉬는 생성했으면 이전의 펜/브러쉬로 해제 해주어야 한다.

GDI 오브젝트도 메모리를 사용하기 때문에 더 이상 사용하지 않을때에는 DeleteObject를 통해서 메모리를 삭제

 

# 브러쉬

HBRUSH CreateSolidBrush(COLORREF color)
HBRUSH CreateHatchBrush(int iHatch, COLORREF color)
iHatch : HS_BDIAGONAL / HS_CROSS / HS_DIAGCROSS / HS_FDIAGONAL / HS_HORIZONTAL / HS_VERTICAL
HBRUSH hNewBrush = CreateSolidBrush(RGB(0, 0, 255));
HBRUSH hNewBrush = CreateHatchBrush(HS_CROSS, RGB(0, 0, 255));

펜의 사용방법과 같다 사용을 하고 나면 해제해주고 삭제하면 된다.

 

'WinAPI' 카테고리의 다른 글

WinAPI에 OpenGL 쓰기  (0) 2020.05.13
DC (Device Context)  (0) 2020.05.07
윈도우 창크기 조정 세팅 (AdjustWindowRect(), SetWindowPos)  (0) 2020.05.07
WinAPI 기본 구조  (0) 2020.05.07