在AE中通过指定中心点和半径画圆

/// <summary>
/// 通过指定的中心点、半径画圆
/// </summary>
/// <param name="pLayer">要画的圆所在的图层</param>
/// <param name="pPoint">圆的中心点</param>
/// <param name="circleRadius">半径圆的</param>
/// <param name="pScreenDisplay">图形绘制对象</param>
private void DrawCircleByCenterAndRadius(ILayer pLayer, IPoint pPoint, double circleRadius, IScreenDisplay pScreenDisplay)
{
    
if (pLayer != null)
    {
        ISegmentCollection pSegmentCollection 
= null;
        
if (pLayer is IFeatureLayer)
        {
            IFeatureLayer pFeatureLayer 
= pLayer as IFeatureLayer;
            IFeatureClass pFeatureClass 
= pFeatureLayer.FeatureClass;
            
if (pFeatureClass != null)
            {
                
if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    pSegmentCollection 
= new PolylineClass();
                }
                
else if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    pSegmentCollection 
= new PolygonClass();
                }
                
//开始画圆
                pSegmentCollection.SetCircle(pPoint, circleRadius);
                IFeature pCircleFeature 
= pFeatureClass.CreateFeature();
                pCircleFeature.Shape 
= pSegmentCollection as IGeometry;
                pCircleFeature.Store();
                
//局部刷新
                IInvalidArea pInvalidArea = new InvalidAreaClass();
                pInvalidArea.Add(pSegmentCollection);
                pInvalidArea.Display 
= pScreenDisplay;
                pInvalidArea.Invalidate((
short)esriScreenCache.esriAllScreenCaches);
            }
        }
    }
}


调用:

DrawCircleByCenterAndRadius(axMapControl1.get_Layer(1), pPoint, 180, axMapControl1.ActiveView.ScreenDisplay);


from: http://www.cnblogs.com/GISCafe/archive/2008/05/26/1207927.html

原文地址:https://www.cnblogs.com/yuxuetaoxp/p/3258735.html