標籤:
路徑層函數
CBrush::CreateSolidBrush
BOOL CreateSolidBrush( COLORREF crColor );
傳回值成功非零; 失敗返零.
參數crColor 是顏色結構體變數,指定畫刷顏色. 顏色可以是指定一個RGB值,也可以通過WINDOWS.H的RGB宏來構造
說明:用指定的固體顏色初始化畫刷;可以被任何裝置上下文選為當前畫刷.應用完由CreateSolidBrush建立的畫刷要將它從裝置上下文裡取出。
CDC::FillPath
BOOL FillPath( );
傳回值成功非零; 失敗返零.
說明:關閉當前路徑中的所有開啟的資料並使用當前畫刷和多邊形填充模式填充路徑內部。當路徑內部填充完,路徑從裝置上下文中拋棄。
CDC::EndPath
BOOL EndPath( );
傳回值成功非零; 失敗返零.
說明:關閉某個等級的路徑並將由定義為該等級的路徑選入裝置上下文
CDC::BeginPath
BOOL BeginPath( );
傳回值成功非零; 失敗返零.
說明:在裝置上下文中開啟某個等級的路徑。開啟後,應用可以開始調用GDI的圖形繪製函數來定義位於路徑裡的點。應用也可以通過調用成員函數EndPath來關閉該路徑。當應用調用BeginPath,任何之前的路徑都被拋棄。
代碼部分
CRect rect;
GetClientRect(rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
CPoint p[7];
p[0] = CPoint(-160, 20);
p[1] = CPoint(-240, 100);
p[2] = CPoint(-280, 0);
p[3] = CPoint(-240, -100);
p[4] = CPoint(-180, -40);
p[5] = CPoint(-140, -100);
p[6] = CPoint(-60, 40);
CBrush NewBrush;
NewBrush.CreateSolidBrush(RGB(255, 0, 0));
CBrush *pOldBrush = pDC->SelectObject(&NewBrush);
pDC->BeginPath();
pDC->MoveTo(p[0]);
for (int i = 1; i < 7; i++)
pDC->LineTo(p[i]);
pDC->LineTo(p[0]);
pDC->EndPath();
pDC->FillPath();
CPen NewPen, * pOldPen;
NewPen.CreatePen(PS_SOLID, 5, RGB(0, 0, 0));
pOldPen = pDC->SelectObject(&NewPen);
p[0] = CPoint(200, 20);
p[1] = CPoint(120, 100);
p[2] = CPoint(80, 0);
p[3] = CPoint(120, -100);
p[4] = CPoint(180, -40);
p[5] = CPoint(220, -100);
p[6] = CPoint(300,40);
pDC->BeginPath();
pDC->MoveTo(p[0]);
for(i = 1; i < 7; i++)
pDC->LineTo(p[i]);
pDC->LineTo((p[0]));
pDC->EndPath();
pDC->StrokeAndFillPath();
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
NewBrush.DeleteObject();
開啟路徑,繪製,關閉路徑,填充路徑
“路徑層函數”,“層”是指繪製的那條線以及由線構成的閉合地區,而不是所有的視圖區。
路徑層函數