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