private void Activate() { if (Map == null || Map.Layers == null) { return; } polygon = new PolygonElement(); #region 所有风格的控制 polygon.Stroke = Stroke; polygon.StrokeThickness = StrokeThickness; polygon.StrokeMiterLimit = StrokeMiterLimit; polygon.StrokeDashOffset = StrokeDashOffset; polygon.StrokeDashArray = StrokeDashArray; polygon.StrokeDashCap = StrokeDashCap; polygon.StrokeEndLineCap = StrokeEndLineCap; polygon.StrokeLineJoin = StrokeLineJoin; polygon.StrokeStartLineCap = StrokeStartLineCap; polygon.Opacity = Opacity; polygon.Fill = Fill; polygon.FillRule = FillRule; #endregion points = new Point2DCollection(); polygon.Point2Ds = points; points.Add(startPt); DrawLayer = new ElementsLayer(); Map.Layers.Add(DrawLayer); DrawLayer.Children.Add(polygon); isActivated = true; isDrawing = true; }
/// <summary>${ui_action_MapAction_method_deactivate_D}</summary> public override void Deactivate() { isActivated = false; isDrawing = false; polygon = null; points = null; if (DrawLayer != null) { DrawLayer.Children.Clear(); } if (Map != null && Map.Layers != null) { Map.Layers.Remove(DrawLayer); } }
private void endDraw(bool isCancel = false) { if (points != null) { PolygonElement pRegion = new PolygonElement() { Point2Ds = this.points.Clone(), #region 所有风格的控制 Stroke = this.Stroke, StrokeThickness = this.StrokeThickness, StrokeMiterLimit = this.StrokeMiterLimit, StrokeDashOffset = this.StrokeDashOffset, StrokeDashArray = this.StrokeDashArray, StrokeDashCap = this.StrokeDashCap, StrokeEndLineCap = this.StrokeEndLineCap, StrokeLineJoin = this.StrokeLineJoin, StrokeStartLineCap = this.StrokeStartLineCap, Opacity = this.Opacity, Fill = this.Fill, FillRule = this.FillRule #endregion }; GeoRegion geoRegion = new GeoRegion();//构造返回的Geometry points.Add(startPt);//需要添加起始点做为最后一个点 geoRegion.Parts.Add(points); DrawEventArgs args = new DrawEventArgs { DrawName = Name, Element = pRegion, Geometry = geoRegion, Canceled = isCancel }; Deactivate(); OnDrawCompleted(args); } }
private void endDraw(bool isDblClick = false, bool isCancel = false) { if (points != null) { points.RemoveAt(points.Count - 2); if (isDblClick) { points.RemoveAt(points.Count - 2); } PolygonElement pRegion = new PolygonElement() { Point2Ds = points.Clone(),//不克隆,在返回后还与下面的GeoRegion指向一个内存地址 #region 所有风格的控制 Stroke = this.Stroke, StrokeThickness = this.StrokeThickness, StrokeMiterLimit = this.StrokeMiterLimit, StrokeDashOffset = this.StrokeDashOffset, StrokeDashArray = this.StrokeDashArray, StrokeDashCap = this.StrokeDashCap, StrokeEndLineCap = this.StrokeEndLineCap, StrokeLineJoin = this.StrokeLineJoin, StrokeStartLineCap = this.StrokeStartLineCap, Opacity = this.Opacity, Fill = this.Fill, FillRule = this.FillRule #endregion };//构造返回Element对象 GeoRegion geoRegion = new GeoRegion();//构造返回的Geometry points.Add(startPoint);//需要添加起始点做为最后一个点 geoRegion.Parts.Add(points); DrawEventArgs args = new DrawEventArgs { DrawName = Name, Element = pRegion, //Element = this.polyline //直接返回是固定像素的 Geometry = geoRegion, Canceled = isCancel }; Deactivate(); OnDrawCompleted(args); } }