Nagie's DevStory
[WIN32 API] 06. 원 그리기 본문
728x90
Win32 API에서 원 또는 타원을 그리고 싶다면 Ellipse()를 사용하면 된다.
이 함수는 Windows GDI(Graphics Device Interface) 라이브러리에 속하며
wingdi.h에 선언된 Ellipse()를 보면 다음과 같다.
BOOL Ellipse(
HDC hdc, // 디바이스 컨텍스트 핸들
int left, // 왼쪽 상단 모퉁이의 x 좌표
int top, // 왼쪽 상단 모퉁이의 y 좌표
int right, // 오른쪽 하단 모퉁이의 x 좌표
int bottom // 오른쪽 하단 모퉁이의 y 좌표
);
각 매개변수는 다음과 같은 역할을 한다.
인자 | 설명 |
hdc | 그림을 그릴 디바이스 컨텍스트 핸들 |
left, top | 원 또는 타원의 왼쪽 상단 모퉁이의 좌표 |
right, bottom | 원 또는 타원의 오른쪽 하단 모퉁이의 좌표 |
다음은 좌표 200,200에서 크기 100,100을 가지는 원을 그리는 코드의 예시다.
// 원 그리기
Ellipse(hdc, 200, 200, 300, 300);
다 괜찮은데 좌푯값을 기재하는 부분이 직관적이지 못해 필자는 위의 함수를 아래처럼 래핑해서 사용 중이다.
void drawCircle(HDC hdc, int startX, int startY, int width, int height) {
Ellipse(hdc, startX, startY, width + startX, height + startY);
}
drawCircle(hdc, 200, 200, 100, 100); //좌표X, 좌표Y, 원의 폭, 원의 높이 순서로 입력
위와 같이 래핑을 하게 되면 각 좌표의 차수(差數)만 입력하면 되기에 훨씬 직관적이며
200,200 좌표에 100,100 크기를 가지는 원을 그린다는 의도가 명확하게 전달된다.
728x90
Comments