API
브러쉬 만들기
PPODO
2018. 1. 22. 02:35
브러쉬는 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); }
실행 결과--------------