'NULL_BRUSH'에 해당되는 글 1건

  1. 2010.07.22 WinApi 그래픽 [투명 오브젝트]
posted by nsakura 2010. 7. 22. 00:21

오늘 마지막 포스트가 될것 같은데 마지막 포스팅을 장식할 내용은

NULL_BRUSH와 NULL_PEN 이다.

투명이라고 되어있지만 아무것도 그리지 않는다 라고 읽는것이 맞을 것이다.

그럼 바로. 코드로 확인을 해보자!

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
 HDC hdc;
 PAINTSTRUCT ps;
 int ncnt;
 HBRUSH hBrush,saveBrush;
 HPEN hPen,savePen;

 switch(iMessage){
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 case WM_PAINT:
  hdc=BeginPaint(hWnd,&ps);
  
  for(ncnt=0; ncnt<250; ncnt+=5){    //화면에 각격 5마다 선을 그린다.
   MoveToEx(hdc,0,ncnt,NULL);
   LineTo(hdc,600,ncnt);
  }
  
  hBrush=CreateSolidBrush(RGB(0,255,0)); //그린 브러쉬
  saveBrush=(HBRUSH)SelectObject(hdc,hBrush);
  
  hPen=CreatePen(PS_SOLID,1,RGB(255,0,0)); //레드 팬
  savePen=(HPEN)SelectObject(hdc,hPen);

  Ellipse(hdc,20,20,150,150);

  //NULL_BRUSH 설정.
  SelectObject(hdc,GetStockObject(NULL_BRUSH));
  Ellipse(hdc,220,20,350,150);

  //NULL_PEN 설정
  SelectObject(hdc,hBrush);
  SelectObject(hdc,GetStockObject(NULL_PEN));
  Ellipse(hdc,420,20,550,150);

  DeleteObject(SelectObject(hdc,savePen));
  DeleteObject(SelectObject(hdc,saveBrush));


  EndPaint(hWnd,&ps);
  return 0;
 }

 return (DefWindowProc(hWnd,iMessage,wParam,lParam));

}



첫번째 원은 붉은색 테두리의 초록색으로 채운다.

두번째 원은 테두리는 붉은팬이지만 내부는 색이 없는 브러쉬 즉 채색이 없다(NULL_BURSH)

세번째는 테두리가 NULL_PEN임으로 테두리가 없는 것이다.

없기 때문에 투명처럼 보이는것이다. 간단한 설명으로.

알이 없는 안경이나 테두리가 없는 안경

쯤으로 생각하면 된다.

투명과 없는거랑은 개념이 약간 틀리다고 난 생각한다.

'Computer > Win API' 카테고리의 다른 글

WinApi RopMode2 [확장]  (0) 2010.07.22
WinApi 그래픽 [DrawMode]  (1) 2010.07.22
WinApi 그래픽 [변수를 두개 두는 이유]  (0) 2010.07.21
WinApi 그래픽 [색상][펜][브러쉬]  (0) 2010.07.21
WinApi 그래픽 [GetStockObject]  (0) 2010.07.21