public override List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc) { List <int> result = new List <int>(); if (!(e.LeftButton == MouseButtonState.Released && e.RightButton == MouseButtonState.Released) || (MouseDownPoint.X == -1 && MouseDownPoint.Y == -1)) { return(result); } Rect boundingBox = GetBoundingBox(); bool SingleClickFlag = false; var pos = e.GetPosition(pc); if ((pos.X - MouseDownPoint.X) * (pos.X - MouseDownPoint.X) + (pos.Y - MouseDownPoint.Y) * (pos.Y - MouseDownPoint.Y) < 5) { // single click boundingBox = new Rect(e.GetPosition(pc).X, e.GetPosition(pc).Y, 0, 0); SingleClickFlag = true; } if (!ResetFlag) { for (int i = 0; i < pc.Stones.Count; i++) { if (pc.Stones[i] is DominoInCanvas dic && IsInside(dic, boundingBox, SingleClickFlag ? true : IncludeBoundary)) { result.Add(i); } } } ResetFlag = false; RemoveSelectionDomain(pc); MouseDownPoint = new System.Windows.Point(-1, -1); return(result); }
public override void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc) { if (e.LeftButton == MouseButtonState.Released && e.RightButton == MouseButtonState.Released) { RemoveSelectionDomain(pc); return; } if (s == null) { return; } UpdateShapeProperties(e.GetPosition((Canvas)sender)); }
public override void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc) { UpdateSelectionMode(e); MouseDownPoint = e.GetPosition((Canvas)sender); SolidColorBrush color = SelectionColor; s.Stroke = color; s.StrokeThickness = 8; Initialize(); ResetFlag = false; AddSelectionDomain(pc); }
public override void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc) { if (s == null) { return; } var poly = s as System.Windows.Shapes.Polyline; if (poly.Points.Count == points.Count) { poly.Points.Add(e.GetPosition(pc)); } else { poly.Points[poly.Points.Count - 1] = e.GetPosition(pc); } }
public override void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc) { if (!((e.ChangedButton == MouseButton.Left || e.ChangedButton == MouseButton.Right) && (e.LeftButton == MouseButtonState.Pressed ^ e.RightButton == MouseButtonState.Pressed))) { return; } if (points.Count == 0) { firstButton = e.ChangedButton; if (SelectionMode == SelectionMode.Neutral) { CurrentSelectionMode = e.ChangedButton == MouseButton.Left ? SelectionMode.Add : SelectionMode.Remove; } else { CurrentSelectionMode = SelectionMode; } AddSelectionDomain(pc); } else if (e.ClickCount == 2) { DoubleClickFlag = true; } if (e.ChangedButton != firstButton) { // selection canceled, clear polygon points.Clear(); RemoveSelectionDomain(pc); return; } s.Stroke = SelectionColor; s.StrokeThickness = 8; points.Add(e.GetPosition(pc)); var poly = s as System.Windows.Shapes.Polyline; poly.Points = new System.Windows.Media.PointCollection(points); }
public override List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc) { var result = new List <int>(); if (!DoubleClickFlag) { return(result); } DoubleClickFlag = false; var boundingBox = GetBoundingBox(); for (int i = 0; i < pc.Stones.Count; i++) { if (pc.Stones[i] is DominoInCanvas dic && IsInside(dic, boundingBox, IncludeBoundary)) { result.Add(i); } } RemoveSelectionDomain(pc); points = new List <System.Windows.Point>(); firstButton = null; return(result); }
public virtual List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc) { return(new List <int>()); }
public abstract void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc);
public abstract void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc);
public void AddSelectionDomain(ProjectCanvas pc) { pc.Children.Remove(s); s.Visibility = Visibility.Visible; pc.Children.Add(s); }
public void RemoveSelectionDomain(ProjectCanvas pc) { s.Visibility = Visibility.Hidden; (VisualTreeHelper.GetParent(s) as Canvas)?.Children.Remove(s); }