第6章 图形对象的操作.docx
第6章图形对象的操作第6章图形对象的操作图形对象的操作主要为图形的交、并、差、异或计算,以及Buffer(缓冲区计算)、OffSet(偏离计算)、InSet(缩放计算)、计算Line的长度、计算面状对象的面积等。对于如图6.1所示2个Polygon,其交、并、差、异或后产生的图形如图6.2所示。6.1Intersect(交)6.1.1Intersect方法介绍利用Intersect方法可以返回2个图形对象的相交图形。Intersect方法的语法为:SetresultShape=object.Intersect(intersectShape,extent)其中;resultShape:操作后返回的图形对象;object:第1个图形对象intersectShape:第2个图形对象;extent:一个矩形范围。注意:(1)如果2个图形没有相交,返回Nothingo(2)根据相交的图形对象类型的不同,得到的结果也不同,如表6.1所列。当返回结果为多个可能时,用ShapeType属性判别返回对象的类别。可以使用自相交线段,但不能使用自相交多边形,否则系统会报错(在VB中为Error5000)0(4)返回图形只能是2D的。6.1.2Intersect的基本示例在Form上添加一个Map控件,2个Command控件。运行时,单击Commandl,显示2个Polygon,单击Command2,显示相交后的Polygon0(工程Chapter601-FormOl)OptionExplicitDimPolyAsMap0bjects2.PolygonDimPolylAsMapObjects2.PolygonDimPoly2AsMap0bjects2.PolygonPrivateSubCommand1_Click()DimpAsPointDimPtsAsMap0bjects2.Points'第一1个PolygonSetPolyl=NewMap0bjects2.PolygonSetPts=NewMap0bjects2.PointsSetp=Mapl.ToMapPoint(100,100)Pts.AddpSetp=Mapl.ToMapPoint(5500,1500)Pts.AddpSetp=Mapl.ToMapPoint(800,3200)Pts.AddpPolyl.Parts.AddPts'第二个PolygonSetPoly2=NewMap0bjects2.PolygonSetPts=NewMapObjects2.PointsSetp=Mapl.ToMapPoint(500,500)Pts.AddpSetp=Mapl.ToMapPoint(3500,1500)Pts.AddpSetp=Mapl.ToMapPoint(200,3000)Pts.AddpPoly2.Parts.AddPtsSetPoly=NothingMapl.TrackingLayer.RefreshTrueEndSubPrivateSubCommand2_Click()IfNotPolylIsNothingThenSetPoly=Polyl.Intersect(Poly2)Mapl.TrackingLayer.RefreshTrueElseMsgBoxquot;先点击显示Polygon按钮!quot;EndIfEndSubPrivateSubMapl_AfterTrackingLayerDraw(.