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);
}


실행 결과--------------