ArcGIS 二次开发中的几种显示效果

 

有以下几种方案:

(1) Element方式

在地图中显示要可视化的内容。这种显示不会随着图层的刷新而丢失,可以用AxMapControl的pGraphicsContainer中,也可以在图层中添加(AddElemen)、删除(DeleteElement, DeleteAllElements),而且可以可以做到动态的增删要展示的元素。

本人已经将其成功用于多种场景,距离来说,用在缓冲区查潮位站、文字标记等场景。

    private void AddElement(IGeometry geometry)  
    {  
        IPolygonElement polygonElement;  
        polygonElement = new PolygonElementClass();  
        IElement element;  
        element = polygonElement as IElement;  
        element.Geometry = geometry;  
        IGraphicsContainer graphicsContainer = base.m_pMapCtrl.Map as IGraphicsContainer;  
        graphicsContainer.AddElement((IElement)polygonElement, 0);  
        base.m_pMapCtrl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);  
    }  
View Code

 

(2) activeView.ScreenDisplay方式

这种方式绘制完成后,在地图刷新时会被清除,所以一般讲要绘制的部分放置到axMapControl1_OnAfterScreenDraw事件中。

 private void DrawEnvelope(IEnvelope newEnvelope)  
    {  
        short cacheID = base.m_pMapCtrl.ActiveView.ScreenDisplay.AddCache();  
      
        ISimpleFillSymbol fillSymbol = new SimpleFillSymbolClass();  
        IRgbColor rgbColor = new RgbColorClass();  
        rgbColor.Red = 255;  
        fillSymbol.Color = rgbColor;  
      
        base.m_pMapCtrl.ActiveView.ScreenDisplay.StartDrawing(base.m_pMapCtrl.ActiveView.ScreenDisplay.hDC, cacheID);  
        base.m_pMapCtrl.ActiveView.ScreenDisplay.SetSymbol((ISymbol)fillSymbol);  
        base.m_pMapCtrl.ActiveView.ScreenDisplay.DrawRectangle(newEnvelope);  
        base.m_pMapCtrl.ActiveView.ScreenDisplay.FinishDrawing();  
    }  
View Code

 

(3) DrawShape

    private void DrawMapShape(IGeometry geometry)  
    {  
        ISimpleFillSymbol simpleFillSymbol;  
        simpleFillSymbol = new SimpleFillSymbolClass();  
        simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSNull;  
      
        IRgbColor color = new RgbColorClass();  
        color.Green = 137;  
        color.Blue = 209;  
        ILineSymbol line = new SimpleLineSymbolClass();  
        line.Color = color;  
        line.Width = 3;  
        simpleFillSymbol.Outline = line;  
        object symbol = simpleFillSymbol;  
        base.m_pMapCtrl.DrawShape(geometry, ref symbol);  
    }  
View Code

 

(4) 通过要素类图层的定义

可以通过图层定义的方式,对地理要素进行可视化而且可以达到动态的效果。

具体可参考 本人博文: ArcGIS AO中控制图层中要素可见状态的总结

 

posted @ 2017-12-29 16:12  wenglabs  阅读(413)  评论(0编辑  收藏  举报