shape
1. 도형그리기
1) my.h 소스
void my_point(HDC hdc); void my_movedraw(HDC hdc); void my_circle(HDC hdc); void my_rectangle(HDC hdc); void my_polygon(HDC hdc, LPPOINT point, int cnt);
2) my.cpp 소스
#include "stdafx.h" #include "shape[1].h" #include "my.h" void my_point(HDC hdc) { MoveToEx(hdc, 150, 100, NULL); //4번째 매개변수는 LPPOINT 타입으로 POINT * 형과 같고, //POINT 타입은 한 점의 좌표을 저장하는 구조체 타입으로 //long형인 x와 y 2개가 존재한다. } void my_movedraw(HDC hdc) { LineTo(hdc, 250, 100); } void my_circle(HDC hdc) { Ellipse(hdc, 250, 50, 350, 150); } void my_rectangle(HDC hdc) { Rectangle(hdc, 50, 50, 150, 150); } void my_polygon(HDC hdc, LPPOINT point, int cnt) { Polygon(hdc, point, cnt); }
+) 소스설명
[1] MoveToEx(hdc, 150, 100, NULL)
- 출력영역의 속성(선색, 선모양 등)과 x좌표, y좌표를 입력 후
4번째 매개변수는 이전 위치좌표를 보통 저장하지만 NULL을 입력해도 무방하다.
- 직선을 그릴 때는 두 점의 좌표가 있어야 하고 그 중 직선의 시작점을 의미한다.
[2] LineTo(hdc, 250, 100)
- 직선의 끝점을 지정 후 시작점에서부터 직선을 그린다.
- 출력영역의 속성과 x좌표, y좌표를 매개변수로 넣는다.
[3] Ellipse(hdc, 250, 50, 250, 150)
- 원을 그리는 함수이다.
- (x1, y1) , (x2, y2) 로 입력을 하여 두 점을 기준으로 사각형을 가상으로 만들고 사각형에 내접하는 원을 그린다.
[4] Rectangle(hdc, 50, 50, 150, 150)
- 사각형을 그리는 함수이다.
- (x1, y1) , (x2, y2) 로 입력을 하여 두 점을 기준으로 사각형을 그린다.
[5] Polygon(hdc, point, cnt)
- 다각형을 그리는 함수이다.
- 다각형의 좌표가 들어있는 point의 주소에 있는 정보로 좌표를 확인하고, cnt는 좌표의 개수를 의미한다.
3) caret.cpp 소스
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 메뉴 선택을 구문 분석합니다. switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); POINT p; POINT point[5] = { {400, 100}, {500, 50}, {450, 200}, {400, 250}, {420, 200} }; RECT rect; //직선그리기 my_point(hdc); my_movedraw(hdc); //원그리기 my_circle(hdc); //사각형그리기 my_rectangle(hdc); //다각형그리기 my_polygon(hdc, point, 5); EndPaint(hWnd, &ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
+) 소스설명
[1] POINT point[5];
- x와 y로 구성되어 있는 POINT 타입의 구조체를 5개 생성하여 값을 저장한다.
- 하나의 구조체 당 2개의 값을 x좌표와 y좌표 순서로 입력한다.
[2] my_polygon(hdc, point, sizeof(point) / 8)
- 매개변수 전달 시 point는 구조체배열의 시작주소를 의미한다.
- sizeof(point) / 8은 좌표(꼭지점)의 개수를 의미한다.
4) 추가사항
[1] BOOL Polyline(HDC hdc, CONST POINT *lppt, int cPoints)
- 위 함수를 이용하면 다각선을 그릴 수 있다.
- Polygon( )[다각형] 함수와 동일하며 차이는 시작점과 끝점이 같으면 다각형이고, 다르면 다각선을 의미한다.
- 두 번째 파라미터는 LPCPOINT point 로 상수형 포인터구조체의 주소를 의미한다.
- 세 번째 파라미터는 꼭지점의 개수를 의미한다.
[실행화면]
'Programming Language > Windows API' 카테고리의 다른 글
마우스로 도형 옮기기 (0) | 2018.09.30 |
---|---|
keyboard[마지막] (0) | 2018.09.10 |
caret (0) | 2018.08.27 |
keyboard[6] (0) | 2018.08.27 |
keyboard[5] (0) | 2018.08.27 |
댓글