您的位置:首页 > 其它

读书笔记_GDI+程序设计_第六章(GraphicsPaths和Regions)

2008-09-07 12:52 351 查看
GraphicsPath对象表示一组子路径或图形。每个图形是一条连接起来的路径,由一系列直线段、曲线段和几何图形组成
GraphicsPath的特点:
1. GraphicsPath本身是一个由有顺序的一组图形组成的路径。GraphicsPath本身是一个有起点和终点的路径
2. GraphicsPath对象中的图形不需要彼此相连。它们可以是不连接的。

Region与GraphicsPath类似,但它与区域相关,其它特点与GraphicsPath相同。

我们使用GraphicsPath类的StartFigure方法来创建一个新的figure而不关闭原来的figure,这样就得到了不连续的GraphicsPath。

闭合图形的方法:
1. 在图形的端点显式添加一条直线段或曲线段,其终点与图形的起点相同。
2. 使用CloseFigure方法来关闭一个图形
3. 我们还可以使用CloseAllFigure方法来闭合路径上所有的图形,并包含当前的图形。

对于本身已经闭合的几何图形,使用CloseAllFigure方法不会有任何影响
若添加的是闭合的几何图形,则在添加新的figure时,不需要使用StartFigure方法

在添加直线时,如果顺序添加的两条线不是首尾相连,则GDI+会自动使用一条直线连接前一线段的终点和后一线段的起点。这样我们可以在构造GraphicsPath时省去很多麻烦。

GraphicsPath类的属性和方法可以参见msdn

创建Region
方法一:使用GraphicsPath定义一个路径,再使用这个路径作为新Region对象的轮廓。
方法二:从矩形中创建区域。这是因为我们需要的很多区域都是矩形
方法三:从一个区域中创建另一个区域(GetRegionData或Clone)

Region的交集和并集
r1.Intersect(r2):把r1更新为r1和r2之间的交集
r1.Union(r2):把r1更新为r1和r2之间的并集
r1.Xor(r2):把r1更新为r1和r2之间的异并集(即包含在r1或r2中、但没有同时包含在两者间的部分)
r1.Complement(r2):更新r1,使之包含位于r2中的部分,但不包含最初位于r1中的部分
r1.Exclude(r2):更新r1,使之不包含任何也位于r2中的部分

得到一个无限大的区域可以使用MakeInfinite方法Region类的属性和方法可以参见msdn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: