WINDING方式不能填充所有内部区域的图形的例子

Polygon函数和多边形填充模式:

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static int cxChar,cxCaps,cyChar,cxClient,cyClient;
	 TCHAR szBuffer[10];
	 HDC hdc;
	 int i;
	 RECT rect;
	 PAINTSTRUCT ps;
	 TEXTMETRIC tm;
	 HPEN hPen;
	 HPEN hPen1,hPen2,hPen3;
	 LOGPEN logpen;
	 HBRUSH hbrush;
	int x,y;
	POINT apt[10];
	static POINT aptFigure[10]={10,70,50,70,50,10,90,10,90,50,
								30,50,30,90,70,90,70,30,10,30};
	 switch(message){
		case WM_CREATE:
			hdc=GetDC(hwnd);
			GetTextMetrics(hdc,&tm);
			cxChar=tm.tmAveCharWidth;
			cxCaps=(tm.tmPitchAndFamily&1?3:2)*cxChar/2;
			cyChar=tm.tmHeight+tm.tmExternalLeading;
			
			ReleaseDC(hwnd,hdc);
			return 0;
		case WM_SIZE:
				cxClient=LOWORD(lParam);
				cyClient=HIWORD(lParam);
				return 0;
		case WM_PAINT:
			hdc=BeginPaint(hwnd,&ps);
			//GetClientRect(hwnd,&rect);
			
			/*SetBkColor(hdc,RGB(255,0,0));
			SetBkMode(hdc,TRANSPARENT);
			SetBkMode(hdc,OPAQUE);
			hPen=CreatePen(PS_DOT,1,0);
			SelectObject(hdc,hPen);
			Rectangle(hdc,100,100,300,200);*/
			
			/*hbrush=(HBRUSH)GetStockObject(GRAY_BRUSH);
			SelectObject(hdc,hbrush);
			SelectObject(hdc,GetStockObject(NULL_PEN));
			Rectangle(hdc,120,120,220,220);
			Rectangle(hdc,100,100,200,200);
			Ellipse(hdc,500,500,300,200);*/

			SelectObject(hdc,GetStockObject(GRAY_BRUSH));
			for(i=0;i<10;++i){
				apt[i].x=cxClient*aptFigure[i].x/200;
				apt[i].y=cyClient*aptFigure[i].y/100;
			}

			SetPolyFillMode(hdc,ALTERNATE);
			Polygon(hdc,apt,10);

			for(i=0;i<10;++i){
				apt[i].x+=cxClient/2;
			}

			SetPolyFillMode(hdc,WINDING);
			Polygon(hdc,apt,10);


			EndPaint(hwnd,&ps);
			return 0;
		case WM_DESTROY:
		
			
			PostQuitMessage(0);
			return 0;
	 }
	 return DefWindowProc(hwnd,message,wParam,lParam);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值