缩放到选择要素

public static void ZoomToFeatureLayerSelection(IFeatureLayer pFeatureLayer)
{
IFeatureSelection featureSelection = pFeatureLayer as IFeatureSelection;
if (featureSelection.SelectionSet.Count == 0) return;
IEnumGeometryBind tEnumGeometryBind = new EnumFeatureGeometryClass();
tEnumGeometryBind.BindGeometrySource(null, featureSelection.SelectionSet);
IEnumGeometry tEnumGeometry = (IEnumGeometry)tEnumGeometryBind;
IGeometryFactory tGeometryFactory = new GeometryEnvironmentClass();
IGeometry tGeometry = tGeometryFactory.CreateGeometryFromEnumerator(tEnumGeometry); //缓冲处理,使处于边界的元素在视图中能够完全显示
ITopologicalOperator mTopologicalOperator = (ITopologicalOperator)tGeometry;
IGeometry mPolygonBuffer = mTopologicalOperator.Buffer(0.1) as IGeometry;
//MapControl.Extent = mPolygonBuffer.Envelope;
//MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, featureSelection, tGeometry.Envelope);
//ArcMap.Document.ActiveView.Extent = axMapControl1.ActiveView.Extent;
// ArcMap.Document.ActiveView.Refresh();
ArcMap.Document.ActiveView.Extent = mPolygonBuffer.Envelope;
ArcMap.Document.ActiveView.Refresh();
}
public static void ZoomToFeatureLayerSelection(IActiveView pActiveView, IFeatureLayer pFeatureLayer)
{
IFeatureSelection featureSelection = pFeatureLayer as IFeatureSelection;

IEnumGeometryBind tEnumGeometryBind = new EnumFeatureGeometryClass();
tEnumGeometryBind.BindGeometrySource(null, featureSelection.SelectionSet);
IEnumGeometry tEnumGeometry = (IEnumGeometry)tEnumGeometryBind;
IGeometryFactory tGeometryFactory = new GeometryEnvironmentClass();
IGeometry tGeometry = tGeometryFactory.CreateGeometryFromEnumerator(tEnumGeometry); //缓冲处理,使处于边界的元素在视图中能够完全显示
ITopologicalOperator mTopologicalOperator = (ITopologicalOperator)tGeometry;
IGeometry mPolygonBuffer = mTopologicalOperator.Buffer(0.01) as IGeometry;
//MapControl.Extent = mPolygonBuffer.Envelope;
//MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, featureSelection, tGeometry.Envelope);
//ArcMap.Document.ActiveView.Extent = axMapControl1.ActiveView.Extent;
// ArcMap.Document.ActiveView.Refresh();
pActiveView.Extent = mPolygonBuffer.Envelope;
pActiveView.Refresh();
}

posted @ 2022-03-28 11:47  南山种豆8  阅读(49)  评论(0)    收藏  举报