public void FlashObjects()
 {
     screenDisplay.StartDrawing(screenDisplay.hDC, (System.Int16)ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache);
     //注意其先后顺序
     //画面
     screenDisplay.SetSymbol(regionSymbol);
     for (int i = 0; i < polygonsFlashObject.Count; i++)
     {
         screenDisplay.DrawPolygon(polygonsFlashObject[i]);
     }
     //画线
     screenDisplay.SetSymbol(lineSymbol);
     for (int i = 0; i < polylinesFlashObject.Count; i++)
     {
         screenDisplay.DrawPolyline(polylinesFlashObject[i]);
     }
     //画点
     screenDisplay.SetSymbol(pointSymbol);
     for (int i = 0; i < pointsFlashObject.Count; i++)
     {
         screenDisplay.DrawPoint(pointsFlashObject[i]);
     }
     Thread.Sleep(500);
     screenDisplay.FinishDrawing();
     mapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null);
 }
Exemple #2
0
 public void ShowFlow(IActiveView ipAV)
 {
     if (this.m_pPointcol != null)
     {
         double         num           = 4.0 * Math.Atan(1.0);
         IScreenDisplay screenDisplay = ipAV.ScreenDisplay;
         screenDisplay.StartDrawing(0, 0);
         IMarkerSymbol determinateFolwArrow = NetworkAnalyst.m_pFlowSymbol.DeterminateFolwArrow as IMarkerSymbol;
         for (int i = 0; i < this.m_pPointcol.PointCount; i++)
         {
             esriFlowDirection direction = (esriFlowDirection)this.m_eFlowDirection[i];
             if (direction == esriFlowDirection.esriFDWithFlow)
             {
                 determinateFolwArrow.Angle = (180.0 * ((double)this.m_angle[i])) / num;
                 screenDisplay.SetSymbol(determinateFolwArrow as ISymbol);
             }
             else if (direction == esriFlowDirection.esriFDAgainstFlow)
             {
                 determinateFolwArrow.Angle = ((180.0 * ((double)this.m_angle[i])) / num) + 180.0;
                 screenDisplay.SetSymbol(determinateFolwArrow as ISymbol);
             }
             else if (direction == esriFlowDirection.esriFDIndeterminate)
             {
                 screenDisplay.SetSymbol(NetworkAnalyst.m_pFlowSymbol.IndeterminateFolwArrow);
             }
             else
             {
                 screenDisplay.SetSymbol(NetworkAnalyst.m_pFlowSymbol.UninitializedFolwArrow);
             }
             IPoint point = this.m_pPointcol.get_Point(i);
             screenDisplay.DrawPoint(point);
         }
         screenDisplay.FinishDrawing();
     }
 }
Exemple #3
0
        //ÉÁ˸ͼÐΣ¬Ö÷ÒªÊÇָʮ×ÖË¿µÄÉÁ˸Yjl0729,add
        public static void FlashGeometry(IGeometry pGeometry, IActiveView pActiveView, int interval)
        {
            IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;

            pScreenDisplay.StartDrawing(pScreenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
            if (pGeometry == null)
            {
                return;
            }
            switch (pGeometry.GeometryType)
            {
            case esriGeometryType.esriGeometryPolyline:
            case esriGeometryType.esriGeometryLine:
                FlashLine(pActiveView, pGeometry, interval);
                break;

            case esriGeometryType.esriGeometryPolygon:
                FlashPolygon(pActiveView, pGeometry, interval);
                break;

            case esriGeometryType.esriGeometryPoint:
                FlashPoint(pActiveView, pGeometry, interval);
                break;

            default:
                break;
            }
            pScreenDisplay.FinishDrawing();
        }
Exemple #4
0
        //ÉÁ˸ҪËØ
        public static void FlashFeature(IFeature pFeature, IActiveView pActiveView)
        {
            IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;

            pScreenDisplay.StartDrawing(pScreenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
            int interval = 150;

            if (pFeature.Shape == null)
            {
                return;
            }
            switch (pFeature.Shape.GeometryType)
            {
            case esriGeometryType.esriGeometryPolyline:
                FlashLineAndHiLight(pActiveView, pFeature.Shape, interval);
                break;

            case esriGeometryType.esriGeometryPolygon:
                FlashPolygon(pActiveView, pFeature.Shape, interval);
                break;

            case esriGeometryType.esriGeometryPoint:
                FlashPoint(pActiveView, pFeature.Shape, interval);
                break;

            default:
                break;
            }
            pScreenDisplay.FinishDrawing();
        }
        private void FlashGeometry(IGeometry geometry, int flashCount, int interval)
        {
            IScreenDisplay display = m_activeView.ScreenDisplay;
            ISymbol        symbol  = CreateSimpleSymbol(geometry.GeometryType);

            display.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache);
            display.SetSymbol(symbol);

            for (int i = 0; i < flashCount; i++)
            {
                switch (geometry.GeometryType)
                {
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
                    display.DrawPoint(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultipoint:
                    display.DrawMultipoint(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
                    display.DrawPolyline(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
                    display.DrawPolygon(geometry);
                    break;

                default:
                    break;
                }
                System.Threading.Thread.Sleep(interval);
            }
            display.FinishDrawing();
        }
Exemple #6
0
        public static void FlashGeometry(IScreenDisplay iscreenDisplay_0, IGeometry igeometry_0, ISymbol isymbol_0)
        {
            if (igeometry_0 != null)
            {
                ISymbol symbol = (isymbol_0 as IClone).Clone() as ISymbol;
                iscreenDisplay_0.StartDrawing(0, -1);
                symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
                iscreenDisplay_0.SetSymbol(isymbol_0);
                switch (igeometry_0.GeometryType)
                {
                case esriGeometryType.esriGeometryPoint:
                {
                    iscreenDisplay_0.DrawPoint(igeometry_0);
                    Thread.Sleep(300);
                    iscreenDisplay_0.DrawPoint(igeometry_0);
                    goto case esriGeometryType.esriGeometryPolygon;
                }

                case esriGeometryType.esriGeometryMultipoint:
                case esriGeometryType.esriGeometryPolyline:
                case esriGeometryType.esriGeometryPolygon:
                {
                    iscreenDisplay_0.FinishDrawing();
                    break;
                }

                default:
                {
                    goto case esriGeometryType.esriGeometryPolygon;
                }
                }
            }
        }
        private void RefreshDataWfs()
        {
            try
            {
                lock (_getDataLock)
                {
                    IActiveView activeView = ArcUtils.ActiveView;

                    if (activeView != null)
                    {
                        activeView.PartialRefresh(esriViewDrawPhase.esriViewForeground, Layer, null);
                    }
                }

                IActiveView    view    = ArcUtils.ActiveView;
                IScreenDisplay display = view.ScreenDisplay;
                display.StartDrawing(display.hDC, (short)esriScreenCache.esriNoScreenCache);
                ITrackCancel cancel = new TrackCancelClass();
                Layer.Draw(esriDrawPhase.esriDPGeography, display, cancel);
                display.FinishDrawing();
                Viewer.Redraw();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message, "CycloMediaLayer.RefreshDataWfs");
            }
        }
Exemple #8
0
        public void FlashGeometry(IMap pMap, IGeometry pGeometry, long lFlashRate, bool bDoubleFlag)
        {
            try
            {
                if ((pMap != null) && (pGeometry != null))
                {
                    if (lFlashRate <= 0L)
                    {
                        lFlashRate = 200L;
                    }
                    IActiveView    view          = pMap as IActiveView;
                    IScreenDisplay screenDisplay = view.ScreenDisplay;
                    screenDisplay.StartDrawing(screenDisplay.hDC, Convert.ToInt16(esriScreenCache.esriNoScreenCache));
                    switch (pGeometry.GeometryType)
                    {
                    case esriGeometryType.esriGeometryPoint:
                        this.FlashPoint(screenDisplay, pGeometry, true, lFlashRate, bDoubleFlag);
                        break;

                    case esriGeometryType.esriGeometryPolyline:
                        this.FlashLine(screenDisplay, pGeometry, true, lFlashRate, bDoubleFlag);
                        break;

                    case esriGeometryType.esriGeometryPolygon:
                        this.FlashPolygon(screenDisplay, pGeometry, true, lFlashRate, bDoubleFlag);
                        break;
                    }
                    screenDisplay.FinishDrawing();
                }
            }
            catch (Exception exception)
            {
                this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.FlashFun", "FlashGeometry", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
            }
        }
Exemple #9
0
        private void DrawSymbol(ISymbol symbol, IGeometry geometry)
        {
            IScreenDisplay pDisplay = m_activeView.ScreenDisplay;

            pDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache);
            pDisplay.SetSymbol(symbol);
            for (int i = 0; i < 10; i++)
            {
                switch (geometry.GeometryType)
                {
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
                    pDisplay.DrawPoint(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultipoint:
                    pDisplay.DrawMultipoint(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
                    pDisplay.DrawPolyline(geometry);
                    break;

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
                    pDisplay.DrawPolygon(geometry);
                    break;

                default:
                    break;
                }
                System.Threading.Thread.Sleep(100);
            }
            //m_mapControl.FlashShape(geometry, 5, 300, symbol);
            pDisplay.FinishDrawing();
        }
Exemple #10
0
        public static void FlashGeometry(IScreenDisplay display, IEnumerable <IGeometry> geometries)
        {
            IRgbColor color = new RgbColor();

            color.Green = color.Blue = 0;
            color.Red   = 255;

            short cacheId = display.AddCache();

            display.StartDrawing(display.hDC, cacheId);

            geometries.ToList().ForEach(geometry =>
            {
                if (symbolsToFlash.ContainsKey(geometry.GeometryType))
                {
                    var symbol = symbolsToFlash[geometry.GeometryType].Invoke(color);
                    display.SetSymbol(symbol);
                    actionToFlash[geometry.GeometryType].Invoke(display, geometry);
                }
                else
                {
                    throw new KeyNotFoundException("{0} cannot be found in the Symbol dictionary".InvariantFormat(geometry.GeometryType));
                }
            });

            display.FinishDrawing();

            tagRECT rect = new tagRECT();

            display.DrawCache(display.hDC, cacheId, ref rect, ref rect);
            System.Threading.Thread.Sleep(300);
            display.Invalidate(rect: null, erase: true, cacheIndex: cacheId);
            display.RemoveCache(cacheId);
        }
Exemple #11
0
        /// <summary>
        /// 使用线要素刷新(已解决重叠问题)(推荐使用)
        /// 使用IScreenDisplay的DrawPolyline方法,在鹰眼视图画出红线框
        /// </summary>
        /// <param name="activeView">鹰眼视图的活动窗体</param>
        /// <param name="geometry">制框范围</param>
        private void DrawPolyline(IActiveView activeView, IGeometry geometry)
        {
            if (activeView == null)
            {
                return; //如果活动窗体为空, 则返回
            }
            //强行刷新鹰眼视图, 目的: 清除前一次的绘图框, 避免重复绘图框
            axMapControl2.ActiveView.ScreenDisplay.UpdateWindow(); //解决重复绘图框的关键代码
            IScreenDisplay screenDisplay = activeView.ScreenDisplay;

            //Screen的绘图状态处于准备状态
            //参数: (指定设备(Dc=Device), 缓冲区(-1=NoScreenCache,-2=AllScreenCache, -3=ScreenRecoding))
            //解析: 设备(Device)参数指图形的绘制区域
            //缓冲区(Cache)参数指图形是否经由缓存后再绘制在屏幕(Window/Screen)上。
            //一般默认为NoScreenCache, 即不经过缓存直接绘制
            screenDisplay.StartDrawing(screenDisplay.hDC, (System.Int16)esriScreenCache.esriNoScreenCache);
            //实例化颜色对象
            IRgbColor rgbColor = new RgbColorClass();

            rgbColor.Red = 255;
            IColor color = rgbColor;
            //实例化符号(Symbol)对象
            ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();

            simpleLineSymbol.Color = color;
            simpleLineSymbol.Width = 2;
            ISymbol symbol = (ISymbol)simpleLineSymbol;

            screenDisplay.SetSymbol(symbol);
            screenDisplay.DrawPolyline(geometry);
            screenDisplay.FinishDrawing();
        }
Exemple #12
0
        public void SelectByLine(int IndexOfLayer, RubberLineClass Line)
        {
            int            ConstantNum      = 255;
            IActiveView    CurrentView      = axMapControl1.ActiveView;
            IScreenDisplay CurScreenDisplay = CurrentView.ScreenDisplay;

            CurScreenDisplay.StartDrawing(CurScreenDisplay.hDC, (System.Int16)esriScreenCache.esriNoScreenCache);
            IRgbColor RGBCOLORS = new ESRI.ArcGIS.Display.RgbColorClass();

            RGBCOLORS.Red = ConstantNum;
            IColor            MyColor            = RGBCOLORS;
            ISimpleFillSymbol MySimpleFillSymbol = new SimpleFillSymbolClass();

            MySimpleFillSymbol.Color = MyColor;
            ISymbol     MySymbol      = MySimpleFillSymbol as ISymbol;
            IRubberBand MyIRubberBand = Line;
            IGeometry   MyGeometry    = MyIRubberBand.TrackNew(CurScreenDisplay, MySymbol);

            CurScreenDisplay.SetSymbol(MySymbol);
            CurScreenDisplay.DrawPolygon(MyGeometry);
            CurScreenDisplay.FinishDrawing();
            ISpatialFilter MySpatialFilter = new SpatialFilterClass();

            MySpatialFilter.Geometry   = MyGeometry;
            MySpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
            IFeatureLayer     SelectedLayer    = axMapControl1.ActiveView.FocusMap.get_Layer(IndexOfLayer) as IFeatureLayer;
            IFeatureSelection SelectedFeatures = SelectedLayer as IFeatureSelection;

            SelectedFeatures.SelectFeatures(MySpatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
            ISelectionSet FinalSelection = SelectedFeatures.SelectionSet;

            axMapControl1.ActiveView.Refresh();
        }
Exemple #13
0
        public static void FlashGeometry(IScreenDisplay iscreenDisplay_0, IGeometry igeometry_0)
        {
            if (igeometry_0 != null)
            {
                iscreenDisplay_0.StartDrawing(0, -1);
                switch (igeometry_0.GeometryType)
                {
                case esriGeometryType.esriGeometryPoint:
                {
                    Flash.FlashPoint(iscreenDisplay_0, igeometry_0);
                    break;
                }

                case esriGeometryType.esriGeometryMultipoint:
                {
                    Flash.FlashMultiPoint(iscreenDisplay_0, igeometry_0);
                    break;
                }

                case esriGeometryType.esriGeometryPolyline:
                {
                    Flash.FlashLine(iscreenDisplay_0, igeometry_0);
                    break;
                }

                case esriGeometryType.esriGeometryPolygon:
                {
                    Flash.FlashPolygon(iscreenDisplay_0, igeometry_0);
                    break;
                }
                }
                iscreenDisplay_0.FinishDrawing();
            }
        }
        public override void OnDblClick()
        {
            //base.OnDblClick();
            if (m_pNewPolygonFeedback != null)
            {
                m_pPolygon            = m_pNewPolygonFeedback.Stop();
                m_pNewPolygonFeedback = null;
            }
            ISimpleFillSymbol pSimFillSym;
            IRgbColor         pRGB;

            pSimFillSym       = new SimpleFillSymbolClass();
            pRGB              = new RgbColorClass();
            pRGB.Red          = 255;
            pRGB.Green        = 50;
            pRGB.Blue         = 50;
            pRGB.Transparency = 0;
            pSimFillSym.Color = pRGB;
            if (m_pPolygon != null)
            {
                m_pScreenDisplay.StartDrawing(m_pScreenDisplay.hDC, -1);
                m_pScreenDisplay.SetSymbol((ISymbol)pSimFillSym);
                m_pScreenDisplay.DrawPolygon(m_pPolygon);
                m_pScreenDisplay.FinishDrawing();
            }
        }
Exemple #15
0
        public void SelectByPolygon(int IndexOfLayer, RubberPolygonClass Polygon)
        {
            int            ConstantNum     = 255;
            IActiveView    CurrentView     = axMapControl1.ActiveView;
            IScreenDisplay MyScreenDispaly = CurrentView.ScreenDisplay;

            MyScreenDispaly.StartDrawing(MyScreenDispaly.hDC, (System.Int16)esriScreenCache.esriNoScreenCache);
            IRgbColor MYRGBCOLOR = new RgbColorClass();

            MYRGBCOLOR.Red = ConstantNum;
            IColor            MyColor             = MYRGBCOLOR;
            ISimpleFillSymbol MySimpleFillPolygon = new SimpleFillSymbolClass();

            MySimpleFillPolygon.Color = MyColor;
            ISymbol     MySymbol      = MySimpleFillPolygon as ISymbol;
            IRubberBand MyIRubberBand = Polygon;
            IGeometry   MyGeometry    = MyIRubberBand.TrackNew(MyScreenDispaly, MySymbol);

            MyScreenDispaly.SetSymbol(MySymbol);
            MyScreenDispaly.DrawPolygon(MyGeometry);
            MyScreenDispaly.FinishDrawing();
            ISpatialFilter MyISpatialFilter = new SpatialFilterClass();

            MyISpatialFilter.Geometry   = MyGeometry;
            MyISpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
            IFeatureLayer     SelectedLayer   = axMapControl1.ActiveView.FocusMap.get_Layer(IndexOfLayer) as IFeatureLayer;
            IFeatureSelection SelectedFeature = SelectedLayer as IFeatureSelection;

            SelectedFeature.SelectFeatures(MyISpatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
            ISelectionSet MyISelectionSet = SelectedFeature.SelectionSet;

            axMapControl1.ActiveView.Refresh();
        }
Exemple #16
0
 public void FlashElement(IMap pMap, IElement pElement, long lFlashRate, bool bDoubleFlag)
 {
     try
     {
         if ((pMap != null) && (pElement != null))
         {
             if (lFlashRate <= 0L)
             {
                 lFlashRate = 200L;
             }
             IActiveView    view          = pMap as IActiveView;
             IScreenDisplay screenDisplay = view.ScreenDisplay;
             screenDisplay.StartDrawing(screenDisplay.hDC, Convert.ToInt16(esriScreenCache.esriNoScreenCache));
             if (pElement is ILineElement)
             {
                 this.FlashLine(screenDisplay, pElement.Geometry, true, lFlashRate, bDoubleFlag);
             }
             else
             {
                 IPolygon outline = new PolygonClass();
                 pElement.QueryOutline(screenDisplay, outline);
                 this.FlashPolygon(screenDisplay, outline, true, lFlashRate, bDoubleFlag);
             }
             screenDisplay.FinishDrawing();
         }
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.FlashFun", "FlashElement", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
     }
 }
Exemple #17
0
 public override void OnMouseDown(int Button, int Shift, int X, int Y)
 {
     if (Button == 1)
     {
         //产生一个当前的点击的点对象
         IPoint pPoint;
         pPoint = new PointClass();
         pPoint.SpatialReference = pmap.SpatialReference;
         pPoint = pactiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
         //判断是否为第一个点
         if (pPointStd == null)
         {
             pPointStd = pPoint;
             //在屏幕上绘制
             IScreenDisplay screenDisplay = pactiveView.ScreenDisplay;
             screenDisplay.StartDrawing(screenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
             screenDisplay.SetSymbol(new SimpleMarkerSymbolClass());
             screenDisplay.DrawPoint(pPointStd);
             screenDisplay.FinishDrawing();
         }
         else
         {
             IProximityOperator pProximity;
             pProximity = pPointStd as IProximityOperator;
             double pDistance;
             pDistance = pProximity.ReturnDistance(pPoint);
             //标签对象上出现两点间的距离
             MessageBox.Show(pDistance.ToString());
         }
     }
 }
Exemple #18
0
        public void Draw(IScreenDisplay iscreenDisplay_0)
        {
            iscreenDisplay_0.StartDrawing(0, -1);
            switch ((this.itopologyErrorFeature_0 as IFeature).Shape.GeometryType)
            {
            case esriGeometryType.esriGeometryPoint:
            {
                this.method_0(iscreenDisplay_0, (this.itopologyErrorFeature_0 as IFeature).Shape);
                break;
            }

            case esriGeometryType.esriGeometryMultipoint:
            {
                this.method_1(iscreenDisplay_0, (this.itopologyErrorFeature_0 as IFeature).Shape);
                break;
            }

            case esriGeometryType.esriGeometryPolyline:
            {
                this.method_2(iscreenDisplay_0, (this.itopologyErrorFeature_0 as IFeature).Shape);
                break;
            }

            case esriGeometryType.esriGeometryPolygon:
            {
                this.method_3(iscreenDisplay_0, (this.itopologyErrorFeature_0 as IFeature).Shape);
                break;
            }
            }
            iscreenDisplay_0.FinishDrawing();
        }
Exemple #19
0
        /// <summary>
        /// 绘制pGeometry的图形
        /// </summary>
        /// <param name="pGeometry"> 几何体实例</param>
        /// <param name="pScreenDisplay"> 当前屏幕显示</param>
        private void drawgeometryXOR(IPolygon pPolygon, IScreenDisplay pScreenDisplay)
        {
            IFillSymbol       pFillSymbol = new SimpleFillSymbolClass();
            ISimpleLineSymbol pLineSymbol = new SimpleLineSymbolClass();

            try
            {
                //颜色对象
                IRgbColor pRGBColor = new RgbColorClass();
                pRGBColor.UseWindowsDithering = false;
                pRGBColor.Red   = 45;
                pRGBColor.Green = 45;
                pRGBColor.Blue  = 45;

                //填充符号以及画笔
                ISymbol pSymbol = pFillSymbol as ISymbol;
                pSymbol.ROP2      = esriRasterOpCode.esriROPXOrPen;
                pFillSymbol.Color = pRGBColor;

                //边缘线颜色以及画笔
                ISymbol pLSymbol = pLineSymbol as ISymbol;
                pLSymbol.ROP2     = esriRasterOpCode.esriROPXOrPen;
                pRGBColor.Red     = 145;
                pRGBColor.Green   = 145;
                pRGBColor.Blue    = 145;
                pLineSymbol.Color = (IColor)pRGBColor;

                pLineSymbol.Width   = 0.8;
                pLineSymbol.Style   = esriSimpleLineStyle.esriSLSSolid;
                pFillSymbol.Outline = pLineSymbol;

                pScreenDisplay.StartDrawing(m_pScreenDisplay.hDC, -1);  //esriScreenCache.esriNoScreenCache -1
                pScreenDisplay.SetSymbol(pSymbol);

                //不存在已画出的多边形
                if (pPolygon != null)
                {
                    pScreenDisplay.DrawPolygon(pPolygon);
                    m_pPolygon = pPolygon;
                }
                //存在已画出的多边形
                else
                {
                    if (m_pPolygon != null)
                    {
                        pScreenDisplay.DrawPolygon(m_pPolygon);
                    }
                }

                pScreenDisplay.FinishDrawing();
            }
            catch (Exception ex)
            {
                MessageBox.Show("绘制缓冲范围出错:" + ex.Message, "提示");
                pFillSymbol = null;
            }
        }
Exemple #20
0
        /// <summary>
        /// ZQ 2011 1129  modify
        /// </summary>
        /// <param name="pPolygon"></param>
        private void drawgeometryXOR(IGeometry pPolygon)
        {
            //联动
            //this.sliderBuffer.Value = Convert.ToInt32(dblBuffLen.Text);
            //获得缓冲范围

            IScreenDisplay    pScreenDisplay = m_MapControl.ActiveView.ScreenDisplay;
            ISimpleFillSymbol pFillSymbol    = new SimpleFillSymbolClass();
            ISimpleLineSymbol pLineSymbol    = new SimpleLineSymbolClass();

            try
            {
                //颜色对象
                IRgbColor pRGBColor = new RgbColorClass();
                pRGBColor.UseWindowsDithering = false;
                ISymbol pSymbol = (ISymbol)pFillSymbol;
                pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;

                pRGBColor.Red     = 255;
                pRGBColor.Green   = 170;
                pRGBColor.Blue    = 0;
                pLineSymbol.Color = pRGBColor;

                pLineSymbol.Width   = 1.0;
                pLineSymbol.Style   = esriSimpleLineStyle.esriSLSSolid;
                pFillSymbol.Outline = pLineSymbol;

                pFillSymbol.Color = pRGBColor;
                pFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;

                pScreenDisplay.StartDrawing(pScreenDisplay.hDC, -1);  //esriScreenCache.esriNoScreenCache -1
                pScreenDisplay.SetSymbol(pSymbol);

                //不存在已画出的多边形
                if (pPolygon != null)
                {
                    pScreenDisplay.DrawPolygon(pPolygon);
                    m_Polygon = pPolygon;
                }
                //存在已画出的多边形
                else
                {
                    if (m_Polygon != null)
                    {
                        pScreenDisplay.DrawPolygon(m_Polygon);
                    }
                }

                pScreenDisplay.FinishDrawing();
            }
            catch (Exception ex)
            {
                MessageBox.Show("绘制缓冲范围出错:" + ex.Message, "提示");
                pFillSymbol = null;
            }
        }
Exemple #21
0
        private void ActiveViewEventsOnAfterDraw(IDisplay display, esriViewDrawPhase phase)
        {
            if (!_drawFence)
            {
                return;
            }
            if (_fenceArray == null || _fenceArray.Count == 0)
            {
                return;
            }
            IScreenDisplay paramScreenDisplay = ((IActiveView)_context.FocusMap).ScreenDisplay;

            paramScreenDisplay.StartDrawing(paramScreenDisplay.hDC, -2);
            for (int i = 0; i < _fenceArray.Count; i++)
            {
                IGeometry fence = _fenceArray.Element[i];
                if (fence.IsEmpty)
                {
                    continue;
                }
                if (fence is IPolyline)
                {
                    paramScreenDisplay.SetSymbol(_lineSymbol);
                    paramScreenDisplay.DrawPolyline(fence);
                }
                else if (fence is IPolygon)
                {
                    paramScreenDisplay.SetSymbol(_fillSymbol);
                    paramScreenDisplay.DrawPolygon(fence);
                }
            }
            if (_drawPage && _pageInfos != null && _pageInfos.Count > 0)
            {
                IFontDisp disp = new StdFont() as IFontDisp;
                disp.Name = "Arial";
                disp.Size = new decimal(16);

                foreach (IPrintPageInfo pageInfo in _pageInfos)
                {
                    IGeometry pageBoundary = pageInfo.Boundary;
                    paramScreenDisplay.SetSymbol(_fillSymbol);
                    paramScreenDisplay.DrawPolygon(pageBoundary);
                    _textSymbol = SymbolHelper.CreateTextSymbol(Color.Red, disp, 16, pageInfo.PageName);
                    paramScreenDisplay.SetSymbol(_textSymbol as ISymbol);
                    if (!string.IsNullOrEmpty(pageInfo.PageName))
                    {
                        IPoint    centerPoint = new ESRI.ArcGIS.Geometry.Point();
                        IEnvelope pEnv        = pageBoundary.Envelope;
                        centerPoint.PutCoords((pEnv.XMin + pEnv.Width / 2.0), pEnv.YMin + pEnv.Height / 2.0);
                        paramScreenDisplay.DrawText(centerPoint, pageInfo.PageName);
                    }
                }
            }
            paramScreenDisplay.FinishDrawing();
        }
Exemple #22
0
        /// <summary>
        /// 绘制pGeometry的图形
        /// </summary>
        /// <param name="pGeometry"> 几何体实例</param>
        /// <param name="pScreenDisplay"> 当前屏幕显示</param>
        private void drawgeometryXOR(IPolygon pPolygon, IScreenDisplay pScreenDisplay)
        {
            if (this.IsDisposed && m_bOk == false)//如果窗体关闭或者取消 就不绘制 xisheng 2011.06.28
            {
                return;
            }
            ISimpleFillSymbol pFillSymbol = new SimpleFillSymbolClass();
            ISimpleLineSymbol pLineSymbol = new SimpleLineSymbolClass();

            try
            {
                //颜色对象
                IRgbColor pRGBColor = new RgbColorClass();
                pRGBColor.UseWindowsDithering = false;
                ISymbol pSymbol = (ISymbol)pFillSymbol;
                pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;

                pRGBColor.Red     = 255;
                pRGBColor.Green   = 170;
                pRGBColor.Blue    = 0;
                pLineSymbol.Color = pRGBColor;

                pLineSymbol.Width   = 0.8;
                pLineSymbol.Style   = esriSimpleLineStyle.esriSLSSolid;
                pFillSymbol.Outline = pLineSymbol;

                pFillSymbol.Color = pRGBColor;
                pFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;

                pScreenDisplay.StartDrawing(m_pScreenDisplay.hDC, -1);  //esriScreenCache.esriNoScreenCache -1
                pScreenDisplay.SetSymbol(pSymbol);

                //不存在已画出的多边形
                if (pPolygon != null)
                {
                    pScreenDisplay.DrawPolygon(pPolygon);
                    m_pPolygon = pPolygon;
                }
                //存在已画出的多边形
                else
                {
                    if (m_pPolygon != null)
                    {
                        pScreenDisplay.DrawPolygon(m_pPolygon);
                    }
                }

                pScreenDisplay.FinishDrawing();
            }
            catch (Exception ex)
            {
                MessageBox.Show("绘制缓冲范围出错:" + ex.Message, "提示");
                pFillSymbol = null;
            }
        }
Exemple #23
0
        private void RefreshTraceline()
        {
            if (!bBegineMove)
            {
                return;
            }

            m_pActiveView.ScreenDisplay.StartDrawing(m_pActiveView.ScreenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
            m_pActiveView.ScreenDisplay.SetSymbol((ISymbol)m_pSymbol);
            m_pActiveView.ScreenDisplay.DrawPolyline((IGeometry)m_pOffsetTraceLine);
            m_pDisplay.FinishDrawing();
        }
Exemple #24
0
 public static void DrawPolyline(IScreenDisplay pDisplay)
 {
     if (m_ipPolyline == null)
     {
         if ((m_ipEnumNetEID_Junctions != null) && (m_ipEnumNetEID_Junctions.Count == 1))
         {
             IEIDHelper helper = new EIDHelperClass
             {
                 GeometricNetwork = m_pAnalystGN,
                 ReturnGeometries = true
             };
             IEnumEIDInfo info = helper.CreateEnumEIDInfo(m_ipEnumNetEID_Junctions);
             info.Reset();
             IGeometry           point  = info.Next().Geometry;
             ISimpleMarkerSymbol symbol = new SimpleMarkerSymbolClass
             {
                 Style = esriSimpleMarkerStyle.esriSMSCircle,
                 Size  = 2.0,
                 Color = ColorManage.Red
             };
             pDisplay.StartDrawing(0, -1);
             pDisplay.SetSymbol(symbol as ISymbol);
             pDisplay.DrawPoint(point);
             pDisplay.FinishDrawing();
         }
     }
     else
     {
         ISimpleLineSymbol symbol2 = new SimpleLineSymbolClass
         {
             Style = esriSimpleLineStyle.esriSLSSolid,
             Width = 2.0,
             Color = ColorManage.Red
         };
         pDisplay.StartDrawing(0, -1);
         pDisplay.SetSymbol(symbol2 as ISymbol);
         pDisplay.DrawPolyline(m_ipPolyline);
         pDisplay.FinishDrawing();
     }
 }
Exemple #25
0
        protected override void OnPaint(PaintEventArgs e)
        {
            #region old
            //e.Graphics.SmoothingMode = m_smoothingMode;
            //Rectangle cliprectangle = e.ClipRectangle;
            //if (m_staticImage == null)
            //{
            //    cliprectangle = ClientRectangle;
            //    m_staticImage = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
            //    //  m_staticImage.Save("D:\\a.png", ImageFormat.Png);
            //    m_staticDirty = true;
            //}
            ////绘制在背景图片上
            //Graphics BitMapGc = Graphics.FromImage(m_staticImage);
            //BitMapGc.SmoothingMode = m_smoothingMode;
            ////this.BackgroundLayer.Draw(dcStatic, r);
            ////if (m_model.GridLayer.Enabled)
            ////    m_model.GridLayer.Draw(dcStatic, r);
            ////绘制十字丝
            //RPoint rCenterPoint = new RPoint(0, 0, 0);
            //PointF nullPoint = Transform.ToScreen(rCenterPoint, this);
            //BitMapGc.DrawLine(Pens.Blue, nullPoint.X - 10, nullPoint.Y, nullPoint.X + 10, nullPoint.Y);
            //BitMapGc.DrawLine(Pens.Blue, nullPoint.X, nullPoint.Y - 10, nullPoint.X, nullPoint.Y + 10);
            //if (m_staticDirty)
            //{
            //    m_staticDirty = false;

            //    List<ILayer> layers = mMap.Layers;
            //    for (int layerindex = layers.Count - 1; layerindex >= 0; layerindex--)
            //    {
            //        if (layers[layerindex].Visible)
            //            layers[layerindex].Draw(mScreenDisplay);
            //    }
            //    BitMapGc.Dispose();
            //}
            ////绘制背景图片
            //e.Graphics.DrawImage(m_staticImage, cliprectangle, cliprectangle, GraphicsUnit.Pixel);
            #endregion
            e.Graphics.SmoothingMode = m_smoothingMode;
            mScreenDisplay.StartDrawing(this);
            mScreenDisplay.FinishDrawing(e.Graphics);
            if (mScreenDisplay.IsCacheDirty)
            {
                mScreenDisplay.StartRecording();

                mScreenDisplay.StopRecording();
            }
            else
            {
                mScreenDisplay.DrawCache();
            }
        }
Exemple #26
0
        //绘制导入的范围
        private void drawgeometryXOR(IPolygon pPolygon, IScreenDisplay pScreenDisplay)
        {
            ISimpleFillSymbol pFillSymbol = new SimpleFillSymbolClass();
            ISimpleLineSymbol pLineSymbol = new SimpleLineSymbolClass();

            try
            {
                //颜色对象
                IRgbColor pRGBColor = new RgbColorClass();
                pRGBColor.UseWindowsDithering = false;
                ISymbol pSymbol = (ISymbol)pFillSymbol;
                pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;

                pRGBColor.Red     = 255;
                pRGBColor.Green   = 170;
                pRGBColor.Blue    = 0;
                pLineSymbol.Color = pRGBColor;

                pLineSymbol.Width   = 0.8;
                pLineSymbol.Style   = esriSimpleLineStyle.esriSLSSolid;
                pFillSymbol.Outline = pLineSymbol;

                pFillSymbol.Color = pRGBColor;
                pFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;

                pScreenDisplay.StartDrawing(m_pScreenDisplay.hDC, -1);  //esriScreenCache.esriNoScreenCache -1
                pScreenDisplay.SetSymbol(pSymbol);

                //不存在已画出的多边形
                if (pPolygon != null)
                {
                    pScreenDisplay.DrawPolygon(pPolygon);
                    m_Polygon = pPolygon;
                }
                //存在已画出的多边形
                else
                {
                    if (m_Polygon != null)
                    {
                        pScreenDisplay.DrawPolygon(m_Polygon);
                    }
                }

                pScreenDisplay.FinishDrawing();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                pFillSymbol = null;
            }
        }
Exemple #27
0
        public void DrawDifferenceGeometry(IGeometry igeometry_0, IScreenDisplay iscreenDisplay_0)
        {
            IRgbColor color = new RgbColorClass
            {
                Red = 255
            };

            iscreenDisplay_0.StartDrawing(iscreenDisplay_0.hDC, -1);
            switch (igeometry_0.GeometryType)
            {
            case esriGeometryType.esriGeometryPoint:
            {
                ISimpleMarkerSymbol symbol = new SimpleMarkerSymbolClass
                {
                    Color = color,
                    Size  = 10.0
                };
                iscreenDisplay_0.SetSymbol(symbol as ISymbol);
                iscreenDisplay_0.DrawPoint(igeometry_0);
                break;
            }

            case esriGeometryType.esriGeometryPolyline:
            {
                ISimpleLineSymbol symbol2 = new SimpleLineSymbolClass
                {
                    Color = color,
                    Width = 2.0
                };
                iscreenDisplay_0.SetSymbol(symbol2 as ISymbol);
                iscreenDisplay_0.DrawPolyline(igeometry_0);
                break;
            }

            case esriGeometryType.esriGeometryPolygon:
            {
                ISimpleFillSymbol symbol3 = new SimpleFillSymbolClass
                {
                    Outline = { Color = color, Width = 2.0 },
                    Style   = esriSimpleFillStyle.esriSFSForwardDiagonal
                };
                iscreenDisplay_0.SetSymbol(symbol3 as ISymbol);
                iscreenDisplay_0.DrawPolygon(igeometry_0);
                break;
            }
            }
            iscreenDisplay_0.FinishDrawing();
        }
Exemple #28
0
 private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
 {
     IActiveView pActiveView = axMapControl1.ActiveView;
     IScreenDisplay screenDisplay = pActiveView.ScreenDisplay;
     ISimpleLineSymbol lineSymbol = new SimpleLineSymbolClass();
     IRgbColor rgbColor = new RgbColorClass();
     rgbColor.Red = 255;
     lineSymbol.Color = rgbColor;
     // IRubberBand rubberLine = new RubberLineClass();
     // IPolyline pLine = (IPolyline)rubberLine.TrackNew(screenDisplay,            (ISymbol)lineSymbol);
     IPolyline pLine = axMapControl1.TrackLine() as IPolyline;
     screenDisplay.StartDrawing(screenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
     screenDisplay.SetSymbol((ISymbol)lineSymbol);
     screenDisplay.DrawPolyline(pLine);
     screenDisplay.FinishDrawing();
 }
Exemple #29
0
 public void FlashElements(IMap pMap, IElement[] pElements, long lFlashRate, bool bDoubleFlag)
 {
     try
     {
         if ((pMap != null) && (pElements != null))
         {
             if (lFlashRate <= 0L)
             {
                 lFlashRate = 200L;
             }
             long num = 0L;
             num = Information.UBound(pElements, 1);
             if (num > 0L)
             {
                 IActiveView    view          = pMap as IActiveView;
                 IScreenDisplay screenDisplay = view.ScreenDisplay;
                 screenDisplay.StartDrawing(screenDisplay.hDC, Convert.ToInt16(esriScreenCache.esriNoScreenCache));
                 IElement element = null;
                 IPolygon outline = null;
                 long     num2    = 0L;
                 for (num2 = 0L; num2 <= (num - 1L); num2 += 1L)
                 {
                     element = pElements[(int)((IntPtr)num2)];
                     if (element != null)
                     {
                         if (element is ILineElement)
                         {
                             this.FlashLine(screenDisplay, element.Geometry, true, lFlashRate, bDoubleFlag);
                         }
                         else
                         {
                             outline = new PolygonClass();
                             element.QueryOutline(screenDisplay, outline);
                             this.FlashPolygon(screenDisplay, outline, true, lFlashRate, bDoubleFlag);
                         }
                     }
                 }
                 screenDisplay.FinishDrawing();
             }
         }
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.FlashFun", "FlashElements", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
     }
 }
Exemple #30
0
 public static void DrawText(IScreenDisplay paramScreenDisplay, IGeometry paramGeom, string paramText,
                             ISymbol paramSymbol)
 {
     if ((paramScreenDisplay == null || paramGeom == null || paramGeom.IsEmpty || paramSymbol == null
         ? false
         : paramSymbol is ITextSymbol))
     {
         paramScreenDisplay.StartDrawing(paramScreenDisplay.hDC, -2);
         paramScreenDisplay.UpdateWindow();
         paramScreenDisplay.SetSymbol(paramSymbol);
         if (paramText == null)
         {
             paramText = "";
         }
         paramScreenDisplay.DrawText(paramGeom, paramText);
         paramScreenDisplay.FinishDrawing();
     }
 }
        public void FlashGeometry(IGeometry Geom, IScreenDisplay Display, IColor Color, int Size, int Interval)
        {
            if (Geom == null)
            return;
              short Cache = Display.ActiveCache;
              Display.ActiveCache = (short)esriScreenCache.esriNoScreenCache;
              Display.StartDrawing(0, Cache);

              if (Geom.GeometryType == esriGeometryType.esriGeometryLine || Geom.GeometryType == esriGeometryType.esriGeometryCircularArc)
              {
            ILineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
            ISymbol pSymbol = (ISymbol)pSimpleLineSymbol;
            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; //erase itself when drawn twice
            pSimpleLineSymbol.Width = Size;
            pSimpleLineSymbol.Color = Color;
            Display.SetSymbol((ISymbol)pSimpleLineSymbol);
            ISegmentCollection pPath = new PathClass();
            pPath.AddSegment((ISegment)Geom);
            IGeometryCollection pPolyL = new PolylineClass();
            pPolyL.AddGeometry((IGeometry)pPath);
            Display.DrawPolyline((IGeometry)pPolyL);
            System.Threading.Thread.Sleep(Interval);
            Display.DrawPolyline((IGeometry)pPolyL);
               }
              else if (Geom.GeometryType == esriGeometryType.esriGeometryPolyline)
              {
            ILineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
            ISymbol pSymbol = (ISymbol)pSimpleLineSymbol; //'QI
            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; //erase itself when drawn twice
            pSimpleLineSymbol.Width = Size;
            pSimpleLineSymbol.Color = Color;
            Display.SetSymbol((ISymbol)pSimpleLineSymbol);
            Display.DrawPolyline(Geom);
            System.Threading.Thread.Sleep(Interval);
            Display.DrawPolyline(Geom);
              }
              else if (Geom.GeometryType == esriGeometryType.esriGeometryPolygon)
              {
            ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
            ISymbol pSymbol = (ISymbol)pSimpleFillSymbol;
            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; //erase itself when drawn twice
            pSimpleFillSymbol.Color = Color;
            Display.SetSymbol((ISymbol)pSimpleFillSymbol);
            Display.DrawPolygon(Geom);
            System.Threading.Thread.Sleep(Interval);
            Display.DrawPolygon(Geom);
              }
              else if (Geom.GeometryType == esriGeometryType.esriGeometryPoint)
              {
            ISimpleMarkerSymbol pSimpleMarkersymbol = new SimpleMarkerSymbolClass();
            ISymbol pSymbol = (ISymbol)pSimpleMarkersymbol;
            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
            pSimpleMarkersymbol.Color = Color;
            pSimpleMarkersymbol.Size = Size;
            Display.SetSymbol((ISymbol)pSimpleMarkersymbol);
            Display.DrawPoint(Geom);
            System.Threading.Thread.Sleep(Interval);
            Display.DrawPoint(Geom);
              }
              Display.FinishDrawing();
              //reset the cache
              Display.ActiveCache = Cache;
        }
Exemple #32
0
        public static void FlashPolygon(IScreenDisplay pDisplay, IGeometry pGeometry, int nTimer, int time)
        {
            ISimpleFillSymbol pFillSymbol = new SimpleFillSymbolClass();
            IRgbColor pRGBColor = new RgbColorClass();
            pRGBColor.Green = 60;
            pRGBColor.Red = 255;
            pRGBColor.Blue = 0;
            pFillSymbol.Outline = null;
            pFillSymbol.Color = pRGBColor;
            ISymbol pSymbol = (ISymbol)pFillSymbol;
            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;

            pDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache);
            pDisplay.SetSymbol(pSymbol);
            for (int i = 0; i < nTimer; i++)
            {
                pDisplay.DrawPolygon(pGeometry);
                System.Threading.Thread.Sleep(time);
            }
            pDisplay.FinishDrawing();
        }
        ///<summary>Flash geometry on the display.</summary>
        ///<param name="geometry"> The input IGeometry to flash.  Supported geometry types are GeometryBag, Polygon, Polyline, Point and Multipoint.</param>
        ///<param name="screenDisplay">An IScreenDisplay reference</param>
        ///<param name="delay">An integer that is the time in milliseconds to wait.</param>
        public static void FlashGeometry(IGeometry geometry, IScreenDisplay screenDisplay, int delay, int times)
        {
            if (geometry == null || screenDisplay == null)
            {
                return;
            }
            bool continueFlashing = true;

            using (ComReleaser comReleaser = new ComReleaser())
            {
                ITrackCancel cancelTracker = new CancelTrackerClass();
                comReleaser.ManageLifetime(cancelTracker);
                screenDisplay.CancelTracker = cancelTracker;
                short cacheID = screenDisplay.AddCache();
                int cacheMemDC = screenDisplay.get_CacheMemDC(cacheID);
                
                IRgbColor fillColor = new RgbColorClass();
                comReleaser.ManageLifetime(fillColor);
                fillColor.Green = 128;
                IRgbColor lineColor = new RgbColorClass();
                comReleaser.ManageLifetime(lineColor);

                screenDisplay.StartDrawing(cacheMemDC, cacheID);
                DrawGeometry(geometry, fillColor, lineColor, (IDisplay)screenDisplay, cancelTracker);
                ESRI.ArcGIS.esriSystem.tagRECT RECT = new tagRECT();
                screenDisplay.FinishDrawing();

                for (int j = 0; j < times; j++)
                {
                    if (continueFlashing == true)
                    {
                        screenDisplay.DrawCache(screenDisplay.hDC, cacheID, ref RECT, ref RECT);
                        if (delay > 0)
                        {
                            System.Threading.Thread.Sleep(delay);
                            screenDisplay.Invalidate(null, true, cacheID);
                            screenDisplay.UpdateWindow();
                            System.Threading.Thread.Sleep(delay);
                        }
                    }
                }
                //---------------------------------------------------------------------

                screenDisplay.RemoveCache(cacheID);
                cancelTracker.Reset();
            }
        }