当前位置:C++技术网 > 资讯 > 路径渐变画刷初接触

路径渐变画刷初接触

更新时间: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类定义的路径。
points:用数组形式表示的组成路径的各个端点的坐标
count:端点数。
wrapmode:渐变画刷在目标区域的排列方式。
接着就是AddLines函数。在这里我们先运行下这个程序:

我们注释掉AddLines函数。看看运行结果:

没错!这下连FillPath函数都没用了,那个这个函数是干嘛的呢?实际上AddLines就是告诉编译器将封闭起整个路径,并告诉你路径在哪里?以便你对后续绘制操作。如果没有他,接下来的填充函数都没有用!