路径层函数

路径层函数
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();

打开路径,绘制,关闭路径,填充路径
“路径层函数”,“层”是指绘制的那条线以及由线构成的闭合区域,而不是所有的视图区。

原文地址:https://www.cnblogs.com/qbin/p/4979224.html