读书笔记_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
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
相关文章推荐
- 读书笔记_GDI+程序设计_第十三章(滚动)
- 读书笔记_GDI+程序设计_第二章(绘图表面)
- 读书笔记_GDI+程序设计_第十四章(鼠标事件和指针)
- javascript高级程序设计第六章:面向对象的程序设计——继承读书笔记
- 读书笔记_GDI+程序设计_第三章(钢笔和笔刷)
- 读书笔记_GDI+程序设计_第四章(文本和字体)
- javascript高级程序设计第六章:面向对象的程序设计——创建对象读书笔记
- 读书笔记_GDI+程序设计_第五章(图像)(上)
- 『C程序设计』读书笔记系列文章之第六章 数组
- 读书笔记_GDI+程序设计_第五章(图像)(下)
- JavaScript高级程序设计(第3版)第六章读书笔记
- 读书笔记 - js高级程序设计 - 第六章 面向对象的程序设计
- 读书笔记_GDI+程序设计_第七章(裁剪和失效)
- 读书笔记_GDI+程序设计_第八章(变换)
- JavaScript高级程序设计 读书笔记之九 本地对象Array
- effective java 读书笔记---第六章 枚举与注解
- 第六章:面向对象的程序设计
- Gdi+ Graphics常用绘图函数
- 《3D Math Primer for Graphics and Game Development》读书笔记2
- Ours Facebook研究报告---第六章.Ours Facebook技术研究报告(3)-程序设计框架