오늘 마지막 포스트가 될것 같은데 마지막 포스팅을 장식할 내용은
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 |