读书人

Win32画多边形为啥不行?解决办法

发布时间: 2012-05-14 15:24:34 作者: rapoo

Win32画多边形为啥不行?

C/C++ code
void DrawS(HDC hDC,HBRUSH nBrush2){    POINT polygon={0};    HRGN gon=CreatePolygonRgn{&polugon,5,WINDING};    fillRgn(hDC,gon,nBrush2);}void OnPaint(HWND hWnd){    PAINTSTRUCT obj={0};    HDC hDC=BeginPaint(hWnd,&obj);    HPEN nPen=CreatePen(PS_DASH,6,RGB(192,168,026));    HGDIOBJ nOldPen = SelectObject(hDC,nPen);    HBRUSH nBrush2 = CreateHatchBrush(HS_HORIZONTAL,RGB(87,11,11));    HGDIOBJ nOldBrush2 = SelectObject(hDC, nBrush2);    DrawS(hDC,nBrush2);    SelectObject(hDC,nOldBrush2);    DeleteObject(nBrush2);    SelectObject(hDC,nOldPen);    DeleteObject(nPen);    EndPaint(hWnd,&obj);}


[解决办法]
void DrawS(HDC hDC, HBRUSH hBrush)
{
POINT pt[4]= {{5, 5}, {50, 5}, {50, 100}, {5, 100}};
HRGN hRgn= CreatePolygonRgn(pt, 4, WINDING);

FillRgn(hDC, hRgn, hBrush);
DeleteObject(hRgn);
}

void OnPaint(HWND hWnd)
{
HDC hDC = GetDC(hWnd);//BeginPaint用于处理WM_PAINT
HBRUSH hBrush= CreateHatchBrush(HS_HORIZONTAL, RGB(87, 11, 11));

DrawS(hDC, hBrush);
DeleteObject(hBrush);
ReleaseDC(hWnd, hDC);
}

读书人网 >VC/MFC

热点推荐