//创建点状线 private IMarkerLineSymbol CreateMarkerLineSymbol() { IMarkerLineSymbol pMarkerLS = new MarkerLineSymbol(); //样式 if (pMarkerSymbol != null) { pMarkerLS.MarkerSymbol = pMarkerSymbol; } ICartographicLineSymbol pCartographicLS = pMarkerLS as ICartographicLineSymbol; //颜色 if (colorCartographicLine.SelectedColor != Color.Empty) { pCartographicLS.Color = ClsGDBDataCommon.ColorToIColor(colorCartographicLine.SelectedColor); } else { pCartographicLS.Color = ClsGDBDataCommon.ColorToIColor(Color.Black); colorCartographicLine.SelectedColor = Color.Black; } //宽度 pCartographicLS.Width = double.Parse(widthCartographicLine.Text); //端点样式 if (rbCatButt.Checked == true) { pCartographicLS.Cap = esriLineCapStyle.esriLCSButt; } else if (rbCatRoundC.Checked == true) { pCartographicLS.Cap = esriLineCapStyle.esriLCSRound; } else if (rbCatSquare.Checked == true) { pCartographicLS.Cap = esriLineCapStyle.esriLCSSquare; } //节点样式 if (rbCatMitre.Checked == true) { pCartographicLS.Join = esriLineJoinStyle.esriLJSMitre; } else if (rbCatRoundJ.Checked == true) { pCartographicLS.Join = esriLineJoinStyle.esriLJSRound; } else if (rbCatBevel.Checked == true) { pCartographicLS.Join = esriLineJoinStyle.esriLJSBevel; } //端点箭头样式 ILineDecorationElement pLineDecorationElement = new SimpleLineDecorationElement(); return(pMarkerLS); }
/// <summary> /// 获得自定义多边形 /// </summary> /// <param name="Button"></param> /// <param name="Shift"></param> /// <param name="X"></param> /// <param name="Y"></param> public override void OnMouseDown(int Button, int Shift, int X, int Y) { IMapControl4 mapControl = null; if (_hookHelper != null) { mapControl = (IMapControl4)_hookHelper.Hook; _polygon = (IPolygon)mapControl.TrackPolygon(); } if (_polygon != null) { if (_polygon.IsEmpty == false) { IMap map = _hookHelper.FocusMap; IGraphicsContainer graphicsContainer = (IGraphicsContainer)map; IActiveView activeView = (IActiveView)map; if (_element != null) { graphicsContainer.DeleteElement(_element); activeView.Refresh(); } IRgbColor color = new RgbColor(); color.Red = 255; color.Green = 255; color.Blue = 0; IMarkerLineSymbol markerLineSymbol = new MarkerLineSymbol(); markerLineSymbol.Color = color; markerLineSymbol.Width = 2; ISimpleFillSymbol simpleFillSym = new SimpleFillSymbol(); simpleFillSym.Style = esriSimpleFillStyle.esriSFSHollow; simpleFillSym.Outline = markerLineSymbol; IFillShapeElement polygonElement = new PolygonElementClass(); polygonElement.Symbol = simpleFillSym; _element = (IElement)polygonElement; _element.Geometry = _polygon; graphicsContainer.AddElement(_element, 0); activeView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); //传值 if (_frmPolygonExtract.IsDisposed) { _frmPolygonExtract = new FrmPolygonExtract(); } _frmPolygonExtract.Map = _hookHelper.FocusMap; _frmPolygonExtract.MapControl = (IMapControl4)_hookHelper.Hook; _frmPolygonExtract.Geometry = _polygon; _frmPolygonExtract.Element = _element; _frmPolygonExtract.ShowDialog(); } else { MessageBoxEx.Show("画出的几何图象是空的!", "提示"); } } else { return; } mapControl.CurrentTool = null; _element = null; }