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

    转自IT-GIS终结者原文ArcEngine创建IElement简单例子 

    代码下载地址:http://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;
        }
    }

    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 IRgbColor GetColor(int r, int g, int b)
    {
        RgbColor color = new RgbColor();
        color.Red = r;
        color.Green = g;
        color.Blue = b;
        return color;
    } 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;
        }
    }

     

  • 相关阅读:
    一些业内有名的网站收集
    WCF重载
    FCKEditor fckconfig.js配置,添加字体和大小 附:中文字体乱码问题解决
    查询第几条到第几条的数据的SQL语句
    SPOJ 9939 Eliminate the Conflict
    UVA 10534 Wavio Sequence
    HDU 3474 Necklace
    POJ 2823 Sliding Window
    UVA 437 The Tower of Babylon
    UVA 825 Walking on the Safe Side
  • 原文地址:https://www.cnblogs.com/arxive/p/6262724.html
Copyright © 2011-2022 走看看