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;
        }
    }

     

  • 相关阅读:
    操作系统概述总结
    string类的用法总结
    stack的简单用法总结
    递归用法总结
    C语言中常见的图形打印总结
    C++中list的用法总结
    STL中find和sort的用法总结
    unity Physics/Physics2DProjectSettings中LayerCollisionMatrix的存储方式
    UnityEvent<T> 系列化
    十字相乘法
  • 原文地址:https://www.cnblogs.com/arxive/p/6262724.html
Copyright © 2011-2022 走看看