-
GDI ObjectWin API/4. GDI 2021. 4. 1. 19:43
GDI오브젝트에는 펜, 브러시, 폰트, 비트맵, 팔레트, 리전이 있다.
GDI오브젝트는 모두 핸들로 관리되므로, 우리는 다만 GDI 오브젝트를 생성하는 함수를 부르고,이 함수가 리턴하는 핸들을 받아서 사용하기만 하면 된다.
GDI오브젝트를 만들 때 핸들을 발급받으며, 선택하거나 삭제할 때는 이 핸들만 가지고 GDI오브젝트를 사용한다.
GDI오브젝트란 그래픽 출력에 사용되는 도구를 뜻함.
선을 그을 때는 펜으로 그리며, 면은 브러시로 채우고 문자열을 출력할 때는 폰트를 사용한다.
GDI오브젝트를 모아 놓은 것이 DC이며 GDI는 현재 DC에 선택되어 있는 GDI 오브젝트를 사용한다.
그래서 사용자는 그래픽을 그리기 전에 DC에 적절한 오브젝트를 선택함으로써 원하는 모양과 속성으로그래픽을 출력할 수 있다.
무효영역이란 화면의 일부가 변경되어 다시 그려져야 할 부분을 말한다.
무효영역이란 다시 그려져야 할 부분이다.아래의 화면은 우리가 만들어 볼 내용이다.
구현 방식
펜은 선을 긋는 것이고, 브러시는 면을 채운다고 했으므로,
무효화 영역의 테두리는 펜으로 긋고, 테두리 안의 영역은 브러쉬로 채우면 된다.
펜을 하나 생성하는데, 속성을 PS_SOLID로 굵기는 5이며 색상은 빨간색으로 설정한다.
그리고 브러쉬를 하나 만들어서 속성을 HS_BDIAGONAL로 색상은 노란색으로 설정한다.
아래는 GDI 오브젝트를 만들고 사용하는 일반적인 절차
(1). HPEN hMyPen, hPrevPen 이라는 핸들을 선언.
(2). hMyPen = CreatePen( PS_SOLID, 5, RGB(255,0,0) ); -> GDI 오브젝트를 만든다.
(3). hPrevPen = (HPEN)SelectObject( hDC, hMyPen ); -> DC에 선택하되, 이때 이전 핸들을 반드시 저장해두어야 한다.
(4). Rectangle( hDC, 50, 50, 300, 200 ); -> 사용한다.
(5). SelectObject( hDC, hPrevPen ); -> 선택을 해제한다.
(6). DeleteObject( hMyPen ); -> 삭제한다.
펜 뿐만 아니라, 브러시 폰트 등 모든 GDI 오브젝트는 일반적으로 이런 절차를 거쳐 만들어지고 사용된다.SelectObject 함수에 대해 좀 더 알아보면 다음과 같다.
아래는 CreatePen 함수와 CreateHatchBrush 함수에 대한 설명이다.
소스 파일
'Win API > 4. GDI' 카테고리의 다른 글
활용 - 체크박스의 상태에 따라 도형 출력하기 (0) 2021.04.02 활용 - 정사각형들을 화면 크기에 맞게 배치하기 (0) 2021.04.01 DrawText - 문자열 출력 함수 (0) 2021.04.01 TextOut - 문자열 출력 함수 (0) 2021.04.01 WM_PAINT (0) 2021.04.01