zoukankan      html  css  js  c++  java
  • ArcEngine创建IElement简单例子

    ArcEngine创建IElement简单例子  

    2011-04-11 11:11:24|  分类: AE开发 |  标签:arcengine、创建ielement  |字号 订阅

     
     

    代码下载地址:https://files.cnblogs.com/ogis/MapControlApplication2.rar

    以下几个函数功能主要是向地图中添加IElement,一共四个函数:

    GetColor,CreateSimpleLineSymbol,CreateSimpleFillSymbol,AddCreateElement

    功能函数:AddCreateElement

    调用例子:

    ISymbol pSymbol = AEUtil.CreateSimpleFillSymbol(Color.Red, 100, esriSimpleFillStyle.esriSFSCross);
    AEUtil.AddCreateElement(pFeature.ShapeCopy,   m_MapControl.ActiveView, pSymbol, fucosKey);
          

    通过red green blue 三色创建IRgbColor 

     public static IRgbColor GetColor(int r, int g, int b)
            {
                RgbColor color = new RgbColor();
                color.Red = r;
                color.Green = g;
                color.Blue = b;
                return color;
            }

     

    创建简单线Symbol  输入参数 color-颜色,width-宽度,style-线型,有七种线型可选

      esriSLSSolid  
      esriSLSDash  
      esriSLSDot 
      esriSLSDashDot 
      esriSLSDashDotDot  
      esriSLSNull  
      esriSLSInsideFrame

     

            public static ISymbol CreateSimpleLineSymbol(Color color, int width, esriSimpleLineStyle style)
            {
                ISimpleLineSymbol pSimpleLineSymbol;
                pSimpleLineSymbol = new SimpleLineSymbol();
                pSimpleLineSymbol.Width = width;
                pSimpleLineSymbol.Color = GetColor(color.R, color.G, color.B);
                pSimpleLineSymbol.Style = style;
                return (ISymbol)pSimpleLineSymbol;

            }

    创建面填充ISymbol对象.   fillColor-颜色,oLineWidth-外廓线宽,fillStyle-填充类型,有以下可选

      esriSFSSolid 
      esriSFSNull  
      esriSFSHollow 
      esriSFSHorizontal 
      esriSFSVertical 
      esriSFSForwardDiagonal 
      esriSFSBackwardDiagonal
      esriSFSCross
      esriSFSDiagonalCross

     

     


            public static ISymbol CreateSimpleFillSymbol(Color fillColor, int oLineWidth, esriSimpleFillStyle fillStyle)
            {
                ISimpleFillSymbol pSimpleFillSymbol;
                pSimpleFillSymbol = new SimpleFillSymbol();
                pSimpleFillSymbol.Style = fillStyle;
                pSimpleFillSymbol.Color = GetColor(fillColor.R, fillColor.G, fillColor.B);
                pSimpleFillSymbol.Outline = (ILineSymbol)CreateSimpleLineSymbol(fillColor, 1, esriSimpleLineStyle.esriSLSDash);
                return (ISymbol)pSimpleFillSymbol;

            }

     

      函数实现向地图中添加元素,pGeometry-元素形状,pActiveView-地图视图,pSymbol-符号,key-元素属性

            public static IElement AddCreateElement(IGeometry pGeometry, IActiveView pActiveView, ISymbol pSymbol, string key)
            {
                try
                {
                    IGraphicsContainer pGraphicsContainer = pActiveView.GraphicsContainer;
                    IElement pElement = null;
                    ILineElement pLineElement = null;
                    IFillShapeElement pFillShapeElement = null;
                    IMarkerElement pMarkerElement = null;
                    ICircleElement pCircleElement = null;
                    IElementProperties pElmentProperties = null;
                    switch (pGeometry.GeometryType)
                    {

                        case esriGeometryType.esriGeometryEnvelope:
                            {
                                pElement = new RectangleElement();
                                pElement.Geometry = pGeometry;
                                pFillShapeElement = (IFillShapeElement)pElement;
                                pFillShapeElement.Symbol = (IFillSymbol)pSymbol;
                                break;
                            }
                        case esriGeometryType.esriGeometryPolyline:
                            {
                                pElement = new LineElement();
                                pElement.Geometry = pGeometry;

                                pLineElement = (ILineElement)pElement;
                                pLineElement.Symbol = (ILineSymbol)pSymbol;
                                break;
                            }
                        case esriGeometryType.esriGeometryLine:
                            {
                                pElement = new LineElement();
                                pElement.Geometry = pGeometry;

                                pLineElement = (ILineElement)pElement;
                                pLineElement.Symbol = (ILineSymbol)pSymbol;
                                break;
                            }
                        case esriGeometryType.esriGeometryPolygon:
                            {
                                pElement = new PolygonElement();
                                pElement.Geometry = pGeometry;
                                pFillShapeElement = (IFillShapeElement)pElement;

                                pFillShapeElement.Symbol = (IFillSymbol)pSymbol;
                                break;
                            }
                        case esriGeometryType.esriGeometryMultipoint:
                        case esriGeometryType.esriGeometryPoint:
                            {
                                pElement = new MarkerElement();
                                pElement.Geometry = pGeometry;

                                pMarkerElement = (IMarkerElement)pElement;

                                pMarkerElement.Symbol = (IMarkerSymbol)pSymbol;
                                break;
                            }
                        case esriGeometryType.esriGeometryCircularArc:
                            {
                                pElement = new CircleElementClass();
                                pElement.Geometry = pGeometry;

                                pCircleElement = (ICircleElement)pElement;
                                break;
                            }
                        default:
                            pElement = null;
                            break;
                    }

                    if (pElement != null)
                    {
                        pElmentProperties = pElement as IElementProperties;
                        pElmentProperties.Name = key;

                        pGraphicsContainer.AddElement(pElement, 0);
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, pGeometry.Envelope);
                        return pElement;
                    }
                    else
                    {
                        return null;
                    }
                }
                catch (Exception ex)
                {
                    return null;
                }
            }

  • 相关阅读:
    作业要求 20201022-1 每周例行报告
    作业要求 20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-1 每周例行报告
    总结
    20201126-1 每周例行报告
    20201120-1 每周例行报告
    20201112-1 每周例行报告
    20201105-1 每周例行报告
    20201029-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/xianyin05/p/3101077.html
Copyright © 2011-2022 走看看