在AE中通过指定中心点和半径画圆
本文转自:http://www.cnblogs.com/GISCafe/archive/2008/05/26/1207927.html
///
<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);
}
}
}
}
/// 通过指定的中心点、半径画圆
/// </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);