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); }
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(); } }
//ÉÁ˸ͼÐΣ¬Ö÷ÒªÊÇָʮ×ÖË¿µÄÉÁ˸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(); }
//ÉÁ˸ҪËØ 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(); }
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"); } }
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, "", "", ""); } }
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(); }
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); }
/// <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(); }
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(); }
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(); } }
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(); }
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, "", "", ""); } }
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()); } } }
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(); }
/// <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; } }
/// <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; } }
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(); }
/// <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; } }
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(); }
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(); } }
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(); } }
//绘制导入的范围 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; } }
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(); }
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(); }
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, "", "", ""); } }
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; }
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(); } }