1. 텍스트 출력 , paint 이외 구역에서 출력하기
1. api 글에 메시지 출력 구간
switch (iMessage)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
1.텍스트 출력
TextOut(hdc, 100, 100, "2d다", strlen("2d다"));
2.텍스트 색
SetTextColor(hdc, RGB(255, 0, 255));
TextOut(hdc, 100, 120,"새벽1시", strlen("새벽1시"));
EndPaint(hWnd, &ps);
}
break;
case WM_LBUTTONDOWN:// 마우스 왼쪽 클릭
{ 3.핸들 생성 및 제거
hdc = GetDC(_hWnd);
TextOut(hdc, WINSIZEX / 2, 20, "렉트 안", strlen("렉트 안"));
ReleaseDC(_hWnd, hdc);
}
break;
}
1. TextOut(hdc, 100, 100, "2d다", strlen("2d다"));
TextOut(hdc, x좌표, y좌표, 문자 , 문자열 ); : 지정된 좌표에 텍스트를 출력함
2. SetTextColor(hdc, RGB(255, 0, 255));
SetTextColor(hdc, RGB(255, 0, 255)); : 지정된 RGB색상으로 텍스트 색 변환
3. hdc = GetDC(_hWnd); ReleaseDC(_hWnd, hdc);
paint이외의 구역에서 핸들을 가져와 그린다.
GetDC 가져온 이후 사용하고 자원을 계속 소모하기 때문에 ReleaseDC로 사용한걸 치워야함.
2. 선과 도형
2-1 선
switch (iMessage)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
1.선 시작점
MoveToEx(hdc,50,50,NULL);
2.다음 점
LineTo(hdc,100,100);
EndPaint(hWnd, &ps);
}
break;
}
1. MoveToEx(hdc,50,50,NULL); : 선을 긋기 위해 찍는 시작점. 지정된 좌표에 생성됨
MoveToEx(hdc,x 좌표,y 좌표 ,이전 위치 좌표);
2. LineTo(hdc, 100 ,100); : 지정된 좌표와 MoveToEx로 생성된 좌표 사이에 선을 만듬.(이후 연속 사용가능)
LineTo(hdc, x 좌표 , y 좌표);
2-2 사각형, 원형
switch (iMessage)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
1.사각형
Rectangle(hdc, 500,500,600,600);
2.원형
Ellipse(hdc, 200, 200, 300, 300);
EndPaint(hWnd, &ps);
}
break;
}
1.Rectangle(hdc, 500,500,600,600); : 지정된 1번째 점과 2번째 점 사이에 사각형을 출력함
Rectangle(hdc, 1번째 점 x좌표,
1번째 점 y좌표,
2번째 점 x좌표,
2번째 점 y좌표);
2. Ellipse(hdc, 200, 200, 300, 300); : 지정된 1번째 점과 2번째 점 사이에 원을 출력함
사각형을 만들고 그 안에 원을 만든다 생각하면 편함
Ellipse(hdc, 1번 x, 1번 y, 2번 x, 2번 y);
3.펜 브러쉬, Create, SelectObject(,), DeleteObject()
switch (iMessage)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
1. 새로운 펜인 hpen을 만든다.
HPEN hpen = CreatePen(PS_SOLID, 3, RGB(255, 0, 255));
2. Select로 새로운 펜으로 스왑하고 이전 펜은 oldpen에 반환한다.
HPEN oldPen = (HPEN)::SelectObject(hdc, (HGDIOBJ)hpen);
3. 펜을 사용한다.
Rectangle(hdc, 500,500,600,600);
4. Select로 원래 사용하던 값이 들어있는 oldpen으로 스왑하고 이전 펜은 hpen에 반환한다.
hpen = (HPEN)::SelectObject(hdc, oldPen);
5. hpen을 삭제한다.
::DeleteObject(hpen);
5-1 브러쉬도 동일함
EndPaint(hWnd, &ps);
}
break;
}
6. HPEN hpen = CreatePen(PS_SOLID, 3, RGB(255, 0, 255)); : 펜 생성
CreatePen(글꼴, 선 굵기, 색상);
7. HPEN oldPen = (HPEN)::SelectObject(hdc, (HGDIOBJ)hpen);
(타입)::SelectObject(hdc, (HGDIOBJ)스왑할 도구);
8. HBRUSH hbr = CreateBrush(RGM(20,20,20)); : 브러쉬 생성
CreateBrush(색상);
9.HBRUSH oldHbr = (HBRUSH)::SelectObject(hdc, (HGDIOBJ)hbr);
(타입)::SelectObject(hdc, (HGDIOBJ)스왑 도구)
10. ::DeleteObject(hpen);
::DeleteObject(삭제할 도구);
HPEN
HBRUSH
SelectObject()
DeleteObject()
'C++ 2D' 카테고리의 다른 글
7. 시간과 입력 (0) | 2021.05.31 |
---|---|
6. 싱글 톤 패턴 (0) | 2021.05.31 |
5. 마우스 (0) | 2021.05.28 |
3.Rect, WM, VK, InvalidateRect(,,) (0) | 2021.05.26 |
1. C++ Window.h (0) | 2021.05.25 |