第6章图形对象的操作Word文档下载推荐.docx
- 文档编号:20966218
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:47
- 大小:350.17KB
第6章图形对象的操作Word文档下载推荐.docx
《第6章图形对象的操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第6章图形对象的操作Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
当返回结果为多个可能时,用shapeType属性判别返回对象的类别。
(3)可以使用自相交线段,但不能使用自相交多边形,否则系统会报错(在VB中为Error5000)。
(4)返回图形只能是2D的。
6.1.2Intersect的基本示例
在Form上添加一个Map控件,2个Command控件。
运行时,单击Command1,显示2个Polygon,单击Command2,显示相交后的Polygon。
(工程Chapter601-Form01)
OptionExplicit
DimPolyAsMapObjects2.Polygon
DimPoly1AsMapObjects2.Polygon
DimPoly2AsMapObjects2.Polygon
PrivateSubCommand1_Click()
DimpAsPoint
DimPtsAsMapObjects2.Points
'
第一个Polygon
SetPoly1=NewMapObjects2.Polygon
SetPts=NewMapObjects2.Points
Setp=Map1.ToMapPoint(100,100)
Pts.Addp
Setp=Map1.ToMapPoint(5500,1500)
Setp=Map1.ToMapPoint(800,3200)
Poly1.Parts.AddPts
第二个Polygon
SetPoly2=NewMapObjects2.Polygon
Setp=Map1.ToMapPoint(500,500)
Setp=Map1.ToMapPoint(3500,1500)
Setp=Map1.ToMapPoint(200,3000)
Poly2.Parts.AddPts
SetPoly=Nothing
Map1.TrackingLayer.RefreshTrue
EndSub
PrivateSubCommand2_Click()
IfNotPoly1IsNothingThen
SetPoly=Poly1.Intersect(Poly2)
Else
MsgBox"
先点击“显示Polygon”按钮!
"
EndIf
PrivateSubMap1_AfterTrackingLayerDraw(ByValhDCAsstdole.OLE_HANDLE)
DimsymAsNewSymbol,sym1AsNewSymbol,sym2AsNewSymbol
sym.Color=moRed
sym1.Color=moGreen
sym2.Color=moCyan
IfNotPolyIsNothingThen
SetPoly1=Nothing
SetPoly2=Nothing
Map1.DrawShapePoly,sym
Map1.DrawShapePoly1,sym1
IfNotPoly2IsNothingThen
Map1.DrawShapePoly2,sym2
6.1.3 求矩形和一个地区相交
本例计算一个任意矩形和墨西哥的—个州界的交。
在Form上添加Map1和Label1控件,添加程序如下:
(工程Chapter601-Form02)
DimresultShapeAsMapObjects2.Polygon
DimrecSelectionAsMapObjects2.Recordset
DimintersectShapeAsMapObjects2.Polygon
DimrectAsMapObjects2.Rectangle
PrivateSubMap1_AfterLayerDraw(ByValindexAsInteger,ByValcanceledAsBoolean,ByValhDCAsstdole.OLE_HANDLE)
Dimsym1AsNewMapObjects2.Symbol
IfNotrectIsNothingThen
sym1.Color=moYellow
Map1.DrawShaperect,sym1
IfNotrecSelectionIsNothingThen
sym1.Color=moOrange
Map1.DrawShaperecSelection,sym1
IfNotresultShapeIsNothingThen
sym1.Color=moRed
Map1.DrawShaperesultShape,sym1
SubDrawLayer()
DimdcAsNewDataConnection
DimlayerAsMapLayer
dc.Database=App.Path+"
\..\"
+"
Mexico"
IfNotdc.ConnectThen
在指定的文件夹下没找到图层数据文件!
End
Setlayer=NewMapLayer
Setlayer.GeoDataset=dc.FindGeoDataset("
States"
)
layer.Symbol.Color=moLimeGreen
Map1.Layers.Addlayer
Rivers"
layer.Symbol.Color=moRed
PrivateSubForm_Load()
DrawLayer
Label1.Caption="
在地图上画矩形。
PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimstrExpressionAsString
DimAiAsSingle
ConstAk=1000
Setrect=Map1.TrackRectangle
strExpression="
STATE_ID=25"
查找编码为25的州;
SetrecSelection=Map1.Layers("
).SearchExpression(strExpression)
SetintersectShape=recSelection.Fields("
Shape"
).Value
SetresultShape=rect.Intersect(intersectShape)
IfresultShapeIsNothingThen
没有相交。
Ai=Format(resultShape.Area*Ak,"
0.00"
相交面积="
&
Ai&
"
平方公里。
Map1.Refresh
运行程序时,直接在地图上画矩形,在下部的标签上就可以显示是否相交,或相交的面积,如图6.3所示。
图6.3 矩形与地区的相交
6.1.4 求矩形和多个地区相交
利用查询特征的方法,还可以计算出一个任意图形和多个地区相交的情况。
下例是求多边形和墨西哥的所有州相交。
(工程Chapter601-Form02a)
DimresultShape(32)AsMapObjects2.Polygon
DimrecSelection(32)AsMapObjects2.Recordset
DimrectAsMapObjects2.Polygon
'
把查找的区域用黄色显示,找到区域用红色显示;
Dimsym(32)AsNewMapObjects2.Symbol
DimRiAsInteger
ForRi=1To32
IfNotresultShape(Ri)IsNothingThen
sym(Ri).Color=moRed
Map1.DrawShaperesultShape(Ri),sym(Ri)
NextRi
Cities"
layer.Symbol.Color=moBlue
在地图上画多边形。
DimAmAsSingle
DimintersectShape(32)AsMapObjects2.Polygon
Setrect=Map1.TrackPolygon
Am=0
STATE_ID="
Ri
SetrecSelection(Ri)=Map1.Layers("
SetintersectShape(Ri)=recSelection(Ri).Fields("
SetresultShape(Ri)=rect.Intersect(intersectShape(Ri))
Am=resultShape(Ri).Area+Am
IfAm<
0.001Then
Format(Am*Ak,"
)&
运行后的效果如图6.4所示。
图6.4 多边形和多个地区的交
6.2 Union(交)
6.2.1 Union方法介绍
利用Union方法返回2个图形对象的合并图形。
Union方法的语法为:
SetresultShape=object.Union(unionShape[,extert])
其中:
第1个图形对象;
unionShape:
extert:
(1)如果2个图形没有相交部分,也可以返回一个并集,如工程Chapter601-Form03所示。
(2)根据选择的图形对象类型的不同,得到的结果也不同,如表6.2所列。
当返回结果为多个可能时,用ShapeType属性判别返回对象的类别。
(3)以使用自相交线段,但不能使用自相交多边形,否则系统会报措(在VB中为Error5000)。
6.2.2Union的基本示例
在Form上添加一个Map控件,2个command控件。
运行时,单击command1,显示2个Polygon,单击command2,显示Union操作后的Polygon。
(工程Chapter601-Form03)
SetPoly=Poly1.Union(Poly2)
6.3 Difference(差)
6.3.1 Difference方法介绍
差集计算利用Difference方法返回两个图解对象之差。
Difference方法的语法为:
SetresultShape=object.Difference(subtractShape[,extert])
subtractShape:
(1)计算关系为:
resultShape=object-subtractShape。
(2)如果两个对象没有差集,resultShape的值为nothing。
(3)根据图形对象类型的不同,得到的结果也不同,如表6.3所列
(4)以使用自相交线段,但不能使用自相交多边形,否则系统会报措(在VB中为Error5000)。
(5)返回图形只能是2D的。
6.3.2Difference的基本示例
运行时,单击command1,显示2个Polygon,单击command2,显示Difference操作后的Polygon。
(工程Chapter601-Form04)
SetPoly=Poly1.Difference(Poly2)
DimsymAs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 图形对象的操作 图形 对象 操作