c#的graphicspath是图形还是路径?
GraphicsPath 是类 ,但是相对于图形还是路径,它比较偏向路径
GraphicsPath对象
它由一系列相互连接的直线、曲线连接起来组成的开放(非闭合)图形。
创建路径时就会隐式创建一个新图形(由上面的直线、曲线等组成)。也可以
显示地声明StartFigure。
图形具有方向,其先后顺序加入的直线、曲线等就表明了次序。
一般图形路径是开放的,由起点,到最后图形(终点)。也可以用ClosedFigure显式 声明为闭合图形(比如填充和剪辑时要用)路径
GraphicsPath 允许将各种形状收集到一个单独的单元(如同集合一样)中。
它用AddLine,AddCurve、AddClosedCurve、AddPie等来添加形状。
而且路径还可添加到另一个路径中去,形成大型复杂路径。
myGPath.AddPath(gp1,False)
最后绘制路径:DrawPath(Pen,GP)GraphicsPath方法
ClearMarkers 清除路径的所有标记
SetMarkers 在GraphicsPath上设置标记
CloseFigure 闭合当前图形,开始新图
CloseAllFigure 闭合所有开放图形,开始新图
Flatten 将此路径中的各段曲线转换成相连的线段序列
GetBounds 返回限定此GraphicsPath对象的矩形(外沿)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。
IsVisible 指示指定点是否此GraphicsPath对象内
IsOutlineVisible 指示当使用指定Pen对象绘制此GraphicsPath对象时,指定点
是否包含在后者的轮廓内(下)
Reset 清空PathPoints和PathTypes数组并将FillMode设置为Alernate
Reverse 反转GraphicsPath对象PathPoints数组各点顺序
Transform 将变形矩形应用到此GraphicsPath对象
Warp 对此GraphicsPath对象应用由一个矩形和一个平等四边形定义的扭曲变形
Widen 在用指定的画笔绘制此路径时,用包含所填充区域的曲线代替此路径轨迹梯度刷
GraphicsPath按先后(轨迹)次序维护一系列线条和曲线。
PathGradientBrush路径渐变刷,在中心点可定义颜色,边沿还可按轨迹分别指定颜色C#使用GraphicsPath的AddString方法示例代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace advanced_drawing
{
public partial class Form14 : Form
{
public Form14()
{
InitializeComponent();
}private void Form14_Paint(object sender, PaintEventArgs e)
{
// Create a GraphicsPath object.
GraphicsPath myPath = new GraphicsPath();// Set up all the string parameters.
string stringText = "Sample Text";
FontFamily family = new FontFamily("Arial");
int fontStyle = (int)FontStyle.Italic;
int emSize = 26;
Point origin = new Point(20, 20);
StringFormat format = StringFormat.GenericDefault;// Add the string to the path.
myPath.AddString(stringText,
family,
fontStyle,
emSize,
origin,
format);//Draw the path to the screen.
e.Graphics.FillPath(Brushes.Black, myPath);}
}
}
graphicspath很强大,就我的理解是它可以记录下来你绘图的过程,最后一起画出来。
由于我是使用c#编程的,对指针很模糊。gdi+画图,c#的效率是一个问题。如果你要画的东西少,那么你可以一个一个画。但是如果多的话,效率很成问题!我在做一个工程的时候,一个form上要画1500多条直线。如果做个循环再画,那么根本就不刷新了,一直卡在那里。
而graphicspath就不会了,你可以使用它的addline()或者addlines()方法。我使用的是addlines()方法,它的参数是一个point数组,这个方法是指连在一起的线。
我这里有个使用graphicspath的例子,共参考。
[Csharp] view plaincopyprint?
g.SmoothingMode = SmoothingMode.AntiAlias;
Point[] p1 = new Point[]{
new Point(0,0),
new Point(0,100),
new Point(100,100),
new Point(100,0),
new Point(200,10),
new Point(100,200)
};
GraphicsPath gPath1= new GraphicsPath();
gPath1.AddLines(p1);
g.DrawPath(new Pen(Color.Black), path);<pre>效果如图:</pre><pre> </pre><pre><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/wwei466/EntryImages/20080724/1633525173887236250.jpg">g</pre><pre>raphicspath 还有一个优点,就是它可以添加其他的graphicspath,并且一次绘出。这个优点太棒了。</pre><pre>方法是addPath();可以设置graphicspath之间是否需要连接。</pre><pre>eg:</pre><pre>代码:</pre><pre> </pre><pre class="Csharp" name="code">g.SmoothingMode = SmoothingMode.AntiAlias;
Point[] p1 = new Point[]{
new Point(0,0),
new Point(0,100),
new Point(100,100),
new Point(100,0),
new Point(200,10),
new Point(100,200)
};
Point[] p2 = new Point[]{
new Point(10,10),
new Point(10,90),
new Point(90,90),
new Point(90,10),new Point(10,10),
};
GraphicsPath gPath1= new GraphicsPath();
gPath1.AddLines(p1);
GraphicsPath gPath2 = new GraphicsPath();
gPath2.AddLines(p2);
GraphicsPath path = new GraphicsPath();
path.AddPath(gPath1, false);
path.AddPath(gPath2, false);
g.DrawPath(new Pen(Color.Black), path)<pre></pre></pre><pre>如上可以看出,addPath方法有两个参数,其中第二个就是设置是否连接的。</pre><pre>废话少说看效果:</pre><pre><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/wwei466/EntryImages/20080724/2.jpg"></pre><pre>如果,第二个参数为true,效果如图:</pre><pre><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/wwei466/EntryImages/20080724/3.jpg"></pre>
------------------------------------------------------------------------------
表示一系列相互连接的直线和曲线。无法继承此类。
应用程序使用路径来绘制形状的轮廓、填充形状内部和创建剪辑区域。图形引擎在世界坐标空间中维护路径内的几何形状的坐标。
路径可由任意数目的图形(子路径)组成。每一图形都是由一系列相互连接的直线和曲线或几何形状基元构成的。图形的起始点是相互连接的一系列直线和曲线中的第一点。终结点是该序列中的最后一点。几何形状基元的起始点和终结点都是由基元规范定义的。
由一系列相互连接的直线和曲线构成的图形(其起始点和终结点可以是同一点)是开放的图形,除非它被显式闭合。可以通过使用 CloseFigure 方法显式闭合一个图形,这通过连接一条从终结点到起始点的直线闭合当前图形。由几何形状基元构成的图形是闭合的图形。
为进行填充和剪辑(例如,如果使用 FillPath 呈现一个路径),通过添加一条从该图形的起始点到其终结点的直线来闭合所有开放的图形。
当创建路径或当闭合图形时,即隐式开始一个新图形。当调用 StartFigure 方法时,新图形是显式的。
在将几何形状基元添加到路径时,它添加包含几何形状的图形,并且还隐式开始一个新图形。因此,在路径中始终有一个当前图形。在将直线和曲线添加到路径中时,根据需要添加一条隐式直线以将当前图形的终结点连接到新直线和曲线的起始点,从而构成一系列相互连接的直线和曲线。
图形具有方向,方向描述在起始点和终结点之间绘制直线段和曲线段的方式。方向按将直线和曲线添加到图形的顺序定义,或者按几何形状基元定义。方向用来确定剪辑和填充的路径内部。
graphicspath用来存储图形的,graphics是画图形的
参考资料: http://msdn.microsoft.com/zh-cn/library/system.drawing.drawing2d.graphicspath(VS.80).aspx