更新时间:2015-11-28 21:57:09浏览次数:1+次
GDI+中使用GraphicsPath类来描述路径。下面我们利用这个类简单的创建一个红五角。
因为是GDI+程序,我们需要加入一些代码,我在《线性渐变画刷的学习之多色渐变色彩的设置》里给了代码,在这里我不说了。创建一个单文档项目,在菜单项中新建菜单项“路径渐变画刷示例”在这个菜单项下面加入一个子菜单项构造红五角。建立该子菜单项的消息响应:
void CPathGradientBrshView::OnBrushpathdemo()
{
// TODO: 在此添加命令处理程序代码
Graphics graphics(this->m_hWnd);
Pen pen(Color::Black, 1);
SolidBrush pthGrBrush(Color::Red);
SolidBrush blackbrush(Color::Blue);
Point points[] = {
Point(75, 0), Point(100, 50),
Point(150, 50), Point(112, 75),
Point(150, 150), Point(75, 100),
Point(0, 150), Point(37, 75),
Point(0, 50), Point(50, 50),
Point(75, 0)
};
/////创建路径
GraphicsPath path;
/////在路径中加入直线
path.AddLines(points, 11);
/////填充路径
graphics.FillPath(&pthGrBrush, &path);
/////绘制边界
graphics.DrawLines(&pen, points, 11);
for (int i = 0; i < 10; i++)
{/////每个圆点的直径为10
graphics.FillEllipse(&blackbrush, points[i].X - 5, points[i].Y - 5, 10, 10);
}
}
GDI+使用PathGradientBrush表示路径渐变画刷。路径渐变画刷的定义用下面的3个构造函数来表示:
PathGradientBrush(GraphicsPath *path);
PathGradientBrush(Points* points,int count, WrapMode wrapmide);
PathGradientBrush(PointF* points,int count, WrapMode wrapmide);
path:由GraphicsPath类定义的路径。
我们注释掉AddLines函数。看看运行结果:
没错!这下连FillPath函数都没用了,那个这个函数是干嘛的呢?实际上AddLines就是告诉编译器将封闭起整个路径,并告诉你路径在哪里?以便你对后续绘制操作。如果没有他,接下来的填充函数都没有用!
相关资讯