1. 描述
PolyNodes是被封装在PolyTree的容器中,同时提供了一个数据结构来代表由Excute()方法返回的多边形轮廓中的父子关系。
一个PolyNode对象代表一个多边形;它的“IsHole”属性表明它是一个“外轮廓”还是一个“内孔”,PolyNodes可能包含任意数量的PolyNode子对象,一般为外轮廓的子对象是内轮廓,而内轮廓的子对象是(嵌套的)外轮廓;
2.属性
2.1 ClipperLib.PolyNode.IsOpen
当该轮廓为开放路径时该属性为True,只有最高级的PolyNode才可以包含开放轮廓;
Boolean IsOpen // read only propertyvar isopen = polynode.IsOpen;
3. 方法
3.1 ClipperLib.PolyNode()
创建新的PolyNode对象
PolyNode PolyNode() // read onlyvar polynode = new ClipperLib.PolyNode();
3.2 ClipperLib.PolyNode.ChildCount()
返回一个PolyNode所有子对象数量
Number ChildCount() // read onlyvar count = polynode.ChildCount();
3.3 ClipperLib.PolyNode.Childs()
返回PolyNode的数组。外部PolyNode子节点包含孔PolyNode,孔PolyNode子节点包含嵌套的外部PolyNode。咋理解,看上面的图
Array < PolyNode > Childs() // read onlyvar childs = polynode.Childs();
3.4 ClipperLib.PolyNode.Contour()
返回该路径的一系列(List)点集坐标;
Path Contour() // read onlyvar contour = polynode.Contour();
3.5 ClipperLib.PolyNode.GetNext()
该方法返回的PolyNode将会是第一个子对象,然后依次是下一个对象,否则是下一个对象;
一个PolyTree可以很方便的被遍历,通过使用GetFIrst(),然后接下来使用GetNext()知道最终返回一个空指针;
PolyNode GetNext()var polytree = new ClipperLib.PolyTree();
//call to Clipper.Execute method here which fills 'polytree'var polynode = polytree.GetFirst();
while (polynode)
{//do stuff with polynode herepolynode = polynode.GetNext();
}
3.6 ClipperLib.PolyNode.IsHole()
当该PolyNode为孔洞时,返回True;
外轮廓的子对象永远是孔洞,同时孔洞的子对象永远是(被嵌套)外轮廓;
对于PolyNode来说没有定义IsHole属性,但是其最高层的子对象永远都是外轮廓;
Boolean IsHole() // read onlyvar ishole = polynode.IsHole();
3.7 ClipperLib.PolyNode.Parent()
返回父节点;
对于PolyTree对象(同样是一个PolyNode)来说没有父对象,将会返回一个空指针;
PolyNode Parent(); read onlyvar parent = polynode.Parent();