Arcgis---绘制多边形

以三角形为例

        // azimuth:方位角
        // circRadius:半径
        // x, y:圆心
        public void DrawTriangle(double azimuth, double circRadius, double x, double y)
        {
            double Direction = (450 - azimuth) % 360;
            double every = 1;

            // 三个点
            IPoint startPoint = new PointClass();
            startPoint.X = x;
            startPoint.Y = y;
            IPoint leftPoint = new PointClass();
            leftPoint.X = x + circRadius * Math.Cos((Direction - 18 * every) * Math.PI / 180);
            leftPoint.Y = y + circRadius * Math.Sin((Direction - 18 * every) * Math.PI / 180);
            IPoint rightPoint = new PointClass();
            rightPoint.X = x + circRadius * Math.Cos((Direction + 18 * every) * Math.PI / 180);
            rightPoint.Y = y + circRadius * Math.Sin((Direction + 9 * every) * Math.PI / 180);

            // 三条边
            ILine pLine = new LineClass();
            ILine pLine1 = new LineClass();
            ILine pLine2 = new LineClass();
            pLine.PutCoords(startPoint, leftPoint);
            pLine1.PutCoords(leftPoint, rightPoint);
            pLine2.PutCoords(rightPoint, startPoint);

            // 通过ISegmentCollection构建Ring对象
            ISegmentCollection pSegCollection = new RingClass();  
            object o = Type.Missing;
            ISegment pSegment = pLine as ISegment;
            ISegment pSegment1 = pLine1 as ISegment;
            ISegment pSegment2 = pLine2 as ISegment;
            pSegCollection.AddSegment(pSegment, ref o, ref o);
            pSegCollection.AddSegment(pSegment1, ref o, ref o);
            pSegCollection.AddSegment(pSegment2, ref o, ref o);
            IRing pRing = pSegCollection as IRing;
            pRing.Close();   // QI到IRing接口封闭Ring对象,使其有效

            IGeometryCollection pGeometryColl = new PolygonClass();
            pGeometryColl.AddGeometry(pRing, ref o, ref o);
            IGraphicsLayer pLayer = (GISMapApplication.Instance.Scene as IBasicMap).BasicGraphicsLayer;
            IGraphicsContainer3D pGC = pLayer as IGraphicsContainer3D;
            IElement pElement = new PolygonElement();
            pElement.Geometry = pGeometryColl as IGeometry;
            pGC.AddElement(pElement);
        }

调用

DrawTriangle(60, 30, 100, 100);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值