브러쉬는 StockObject로 만들어 사용할 수 있지만, StockObject에는 단색 브러쉬 뿐임으로 이 외의 브러쉬는 직접 사용자가 만들어 사용해야만 한다.
브러쉬를 만드는 함수는 다음과 같다.
HBRUSH CreateSolidBrush(COLORREF crColor);
HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref);
첫 번째 함수는 단색의 브러쉬만을 만들 수 있으며, 브러시의 색상만 인수로 전달한다.
두 번째 함수는 브러쉬의 무늬와 색상을 지정할 수 있다. 지정할 수 있는 무늬의 종류는 다음과 같다.
두 함수 모두 리턴하는 값은 만들어진 브러쉬의 핸들이다.
코드----------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
HPEN NowPen, OldPen;
HBRUSH NowBrush,OldBrush;
swithc(iMessage){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
NowPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
NowBrush = CreateSolidBrush(RGB(255, 0, 0));
OldPen = (HPEN)SelectObject(hdc, NowPen);
OldBrush = (HBRUSH)SelectObject(hdc, NowBrush);
Rectangle(hdc,50,50,300,300);
DeleteObject(SelectObject(hdc, OldPen));
DeleteObject(SelectObject(hdc, OldBrush));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam);
}
실행 결과-------------
파란색 NowPen과 빨간 단색인 NowBrush를 각각 만들고 DC에 선택한 후 사각형을 출력한 결과이다.
그럼 이제 CreateHatchBrush 함수를 사용해보도록 하자.
코드-------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
HPEN NowPen, OldPen;
HBRUSH NowBrush,OldBrush;
swithc(iMessage){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
NowPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
NowBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 255, 0));
OldPen = (HPEN)SelectObject(hdc, NowPen);
OldBrush = (HBRUSH)SelectObject(hdc, NowBrush);
Rectangle(hdc,50,50,300,300);
DeleteObject(SelectObject(hdc, OldPen));
DeleteObject(SelectObject(hdc, OldBrush));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam);
}
실행 결과--------------
'API' 카테고리의 다른 글
| 그리기 모드 (0) | 2018.01.24 |
|---|---|
| Old의 의미 (0) | 2018.01.22 |
| 나만의 펜을 만들어 보자! (0) | 2018.01.20 |
| StockObject를사용한 GDI브러쉬 색 변경 (0) | 2018.01.14 |
| GDI? (0) | 2018.01.14 |