using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Shapes; namespace MetroGauges.Controls.DrawTools { public class PolylineTool : DrawToolBase { Polyline currentline = new Polyline(); PointCollection ps= new PointCollection(); public PolylineTool(DesignControl canvas) : base(canvas) { IsStartDraw = true; } public override void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (IsStartDraw) { Point mousePosition = Mouse.GetPosition(this.DrawDesign.canvasDesign); if (ps.Count == 0) { ps.Add(mousePosition); ps.Add(mousePosition); currentline.Points = ps; currentline.Stroke = new SolidColorBrush(Colors.White); currentline.StrokeThickness = 1; // currentline.DataContext = new ShapDataContext() { IsClosed =false }; this.AddShap(currentline); //currentline.Cursor = Cursors.Hand; //this.CanvasDesign.Children.Add(currentline); //this.DrawShaps.Add(currentline); } else { ps.Add(mousePosition); } } } public override void Highlight(FrameworkElement shape) { this.DrawDesign.CrrentDrawTool = this; Polyline line = shape as Polyline; (shape.DataContext as ShapDataContext).OringLocation = line.Points; base.Highlight(shape); } public override void MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (IsStartDraw) { } } public override void MouseMove(object sender, MouseEventArgs e) { if (IsStartDraw) { if (ps.Count > 0) { Point mousePosition = Mouse.GetPosition(this.DrawDesign.canvasDesign); Point lastPoint = ps[ps.Count - 1]; lastPoint.X = mousePosition.X; lastPoint.Y = mousePosition.Y; ps[ps.Count - 1] = lastPoint; currentline.Points = ps; } } } public override void MouseRightButtonUp(object sender, MouseButtonEventArgs e) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { } if (IsStartDraw) { IsStartDraw = false; ps.Remove(ps[ps.Count - 1]); } } public override void m_Root_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { } } }