11. ArcEngine中闪烁目标
发布于 4 年前 作者 admin 2421 次浏览 来自 技术

11. ArcEngine中闪烁目标

//闪烁目标
  
    public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap)
    {
        IActiveView iActiveView = iMap as IActiveView;
        if (iActiveView != null)
        {
            iActiveView.ScreenDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache);
            //根据几何类型调用不同的过程
            switch (iFeature.Shape.GeometryType)
            {
                case esriGeometryType.esriGeometryPolyline:
                    FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;
                case esriGeometryType.esriGeometryPolygon:
                    FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;
                case esriGeometryType.esriGeometryPoint:
                    FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;
                default:
                    break;
            }
            iActiveView.ScreenDisplay.FinishDrawing();
        }
    }
    //闪烁线
    static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry)
    {
        ISimpleLineSymbol iLineSymbol;
        ISymbol iSymbol;
        IRgbColor iRgbColor;
        iLineSymbol = new SimpleLineSymbol();
        iLineSymbol.Width = 4;
        iRgbColor = new RgbColor();
        iRgbColor.Red = 255;
        iLineSymbol.Color = iRgbColor;
        iSymbol = (ISymbol)iLineSymbol;
        iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
        mapControl.FlashShape(iGeometry, 3, 200, iSymbol);
    }
    //闪烁面
    static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry)
    {
        ISimpleFillSymbol iFillSymbol;
        ISymbol iSymbol;
        IRgbColor iRgbColor;
        iFillSymbol = new SimpleFillSymbol();
        iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
        iFillSymbol.Outline.Width = 12;
        iRgbColor = new RgbColor();
        iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();
        iFillSymbol.Color = iRgbColor;
        iSymbol = (ISymbol)iFillSymbol;
        iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
        iScreenDisplay.SetSymbol(iSymbol);
        mapControl.FlashShape(iGeometry, 3, 200, iSymbol);
    }
    //闪烁点
    static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry)
    {
        ISimpleMarkerSymbol iMarkerSymbol;
        ISymbol iSymbol;
        IRgbColor iRgbColor;
        iMarkerSymbol = new SimpleMarkerSymbol();
        iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
        iRgbColor = new RgbColor();
        iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb();
        iMarkerSymbol.Color = iRgbColor;
        iSymbol = (ISymbol)iMarkerSymbol;
        iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
        mapControl.FlashShape(iGeometry, 3, 200, iSymbol);
    }
赞助本站 点击广告
回到顶部