EndIf
SetpFeature =pEnumFeat.Next Wend
End Sub
IArea接口的第一个属性Area(只读,返回一个double类型的数值,为此Area的面积) IArea接口的第二个属性Centroid(只读,返回一个IPoint类型的变量,为此Area的重心)
IArea接口的第三个属性LablePoint(只读,返回一个IPoint类型的变量,为此Area的标签的位置,一般都在此Area的内部)
IArea接口的第四个方法QueryCentroid (Center ) (方法,Center参数为一个IPoint类型的变量,通过调用此方法将重心点赋值给参数Center)
IArea接口的第五个方法QueryLablePoint (LablePoint ) (方法,LablePoint参数为设置IPoint类型的变量,通过调用此方法将标签点赋值给参数LablePoint)
10. 关于IEnvelope接口(esriGeometry) 应用:(中心放大)
Public Sub ZoomInCenter() Dim pMxDocumentAsIMxDocument Dim pActiveViewAsIActiveView
Dim pDisplayTransformAsIDisplayTransformation Dim pEnvelopeAsIEnvelope Dim pCenterPointAsIPoint
Set pMxDocument =Application.Document Set pActiveView =pMxDocument.FocusMap
Set pDisplayTransform= pActiveView.ScreenDisplay.DisplayTransformation Set pEnvelope =pDisplayTransform.VisibleBounds 'In thiscase,wecouldhavesetpEnvelopetoIActiveView::Extent 'Set pEnvelope =pActiveView.Extent Set pCenterPoint =NewPoint
pCenterPoint.x =((pEnvelope.XMax- pEnvelope.XMin) /2)+pEnvelope.XMin pCenterPoint.y =((pEnvelope.YMax- pEnvelope.YMin) /2)+pEnvelope.YMin pEnvelope.width =pEnvelope.width/2 pEnvelope.height =pEnvelope.height/2 pEnvelope.CenterAtpCenterPoint
pDisplayTransform.VisibleBounds= pEnvelope
pActiveView.Refresh
End Sub
IEnvelope接口的第一个方法CenterAt(pPoint) (方法,将这个矩形的边框移动到参数pPoint的位置,但是其他属性不变,如它的Width和Height)
例子代码:
' The example showshowtomoveanEnvelopetoanew 'centerpoint(pPoint). Public Sub t_EnvCenterAt() Dim pEnv1AsIEnvelope Dim pPointAsIPoint
Set pEnv1 =NewEnvelope Set pPoint =NewPoint
pEnv1.PutCoords100,100,200,200 pPoint.PutCoords0,0
pEnv1.CenterAtpPoint
Dim dXminAsDouble,dYminAsDouble,dXmaxAsDouble,dYmaxAsDouble pEnv1.QueryCoordsdXmin,dYmin,dXmax,dYmax
If pEnv1.IsEmptyThen MsgBox \ Else
MsgBox dXmin &\ dYmin & \ dYmax End If
End Sub
IEnvelope接口的长宽属性Height和Width属性(读写,可以通过该属性获取或设置该边框的长和宽)
IEnvelope接口的4个顶点属性UpperLeft、UpperRight、LowerLeft和LowerRight(读写,返回IPoint类型的四个顶点,比直接获得最值坐标更加方便严谨)
例子代码:
Private Sub Form_Load() Set m_pEnveLope =NewEnvelope
Set m_pCPoint =NewPoint m_pEnveLope.XMin = 0 m_pEnveLope.YMin = 0 m_pEnveLope.XMax = 0 m_pEnveLope.YMax = 0 m_pCPoint.X = 0 m_pCPoint.Y = 0
Set m_pLowerLeft =NewPoint Set m_pLowerRight =NewPoint Set m_pUpperLeft =NewPoint Set m_pUpperRight =NewPoint update_props EndSub
PrivateSubupdate_props()
Set m_pLowerLeft =m_pEnveLope.LowerLeft edtLlx.Text = m_pLowerLeft.X edtLly.Text = m_pLowerLeft.Y
Set m_pLowerRight =m_pEnveLope.LowerRight edtLrx.Text = m_pLowerRight.X edtLry.Text = m_pLowerRight.Y Set m_pUpperLeft =m_pEnveLope.UpperLeft edtUlx.Text = m_pUpperLeft.X edtUly.Text = m_pUpperLeft.Y
Set m_pUpperRight =m_pEnveLope.UpperRight edtUrx.Text = m_pUpperRight.X edtUry.Text = m_pUpperRight.Y EndSub
IEnvelope接口的最值坐标属性XMax、XMin、YMax和YMin(读写,可以通过该属性获取或设置该边框的四个顶点的坐标)
IEnvelope接口的第五个方法Union (inEnvelope ) (方法,将参数输入的几何边框和调用该方法的几何边框求并集,并将结果赋值给第一个边框,即调用此方法的object)
例子代码:
Public Sub t_EnvUnion() Dim pEnv1AsIEnvelope Dim pEnv2AsIEnvelope
Set pEnv1 =NewEnvelope Set pEnv2 =NewEnvelope
pEnv1.PutCoords 100,100,200,200 pEnv2.PutCoords 150,150,250,250
pEnv1.Union pEnv2
Dim dXminAsDouble,dYminAsDouble,dXmaxAsDouble,dYmaxAsDouble pEnv1.QueryCoords dXmin,dYmin,dXmax,dYmax
End Sub
IEnvelope接口的第六个方法Union (inEnvelope ) (方法,返回与输入参数相交的区域的几何边框,并将结果赋值给第一个边框,即调用此方法的object)
例子代码:
' The example showshowtointersect2envelopes.Theresultisputin 'thefirstenvelope. PublicSubt_EnvIntersect() Dim pEnv1AsIEnvelope Dim pEnv2AsIEnvelope
Set pEnv1 =NewEnvelope Set pEnv2 =NewEnvelope
pEnv1.PutCoords 100,100,200,200 pEnv2.PutCoords 150,150,250,250
pEnv1.Intersect pEnv2
Dim dXminAsDouble,dYminAsDouble,dXmaxAsDouble,dYmaxAsDouble pEnv1.QueryCoords dXmin,dYmin,dXmax,dYmax
If pEnv1.IsEmptyThen MsgBox\ Else
MsgBoxdXmin &\ dYmin & \ dYmax End If
End Sub
IEnvelope接口的第七个方法PutCoords (XMin, YMin,XMax,YMax) (方法,将新建的一个边框的4个极坐标设置为输入的参数)
例子代码:
Public Function CreateEnvXY(dblXMinAsDouble,dblYMinAsDouble,_
dblXMax As Double,dblYMaxAsDouble)AsIEnvelope Set CreateEnvXY =NewesriGeometry.Envelope CreateEnvXY.PutCoordsdblXMin,dblYMin,dblXMax,dblYMax
End Function
IEnvelope接口的第八个方法QueryCoords (XMin, YMin,XMax,YMax)(方法,将已有的一个边框的4个极坐标输出到参数当中以备后用)
IEnvelope接口的第九个方法Expand (dx, dy, asRatio) (方法,按照输入的dx与dy参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小)
例子代码:
Public Sub t_EnvExpand() Dim pEnv1AsIEnvelope Set pEnv1 =NewEnvelope pEnv1.PutCoords 100,100,200,200
pEnv1.Expand 0.5, 0.5,True
Dim dXminAsDouble,dYminAsDouble,dXmaxAsDouble,dYmaxAsDouble pEnv1.QueryCoords dXmin,dYmin,dXmax,dYmax
If pEnv1.IsEmptyThen MsgBox\ Else
MsgBoxdXmin &\ dYmin & \ dYmax End If
End Sub