/// <summary> /// Handle the OnEndCreation event /// </summary> /// <param name="e">Provides data for the MouseEventArgs event</param> private void OnEndCreation(MouseEventArgs e) { SetTextColorDialog dialog = new SetTextColorDialog(); Window window = new Window { Title = "Name and color", Content = dialog, SizeToContent = SizeToContent.WidthAndHeight, ResizeMode = ResizeMode.NoResize }; if (window.ShowDialog() == true) { EllipseInfo ellipse = new EllipseInfo(); ellipse.Shape.Height = Math.Abs(this.a.Y - this.b.Y); ellipse.Shape.Width = Math.Abs(this.a.X - this.b.X); ellipse.Shape.Stroke = dialog.Contour; ellipse.Shape.StrokeThickness = EllipseInfo.DefaultStrokeThickness; ellipse.Shape.Fill = dialog.Fill; ellipse.Name = dialog.NameItem; ellipse.TopLeft = new Point(this.a.X > this.b.X ? this.b.X : this.a.X, this.a.Y > this.b.Y ? this.b.Y : this.a.Y); this.AddEllipse(ellipse); } Canvas.Children.Remove(this.ellipseTemp); this.isDraw = false; }
/// <summary> /// Adds <see cref = "EllipseInfo"/> to drawing area /// </summary> /// <param name="ellipse"><see cref = "EllipseInfo"/> to add</param> public void AddEllipse(EllipseInfo ellipse) { this.ellipses.Add(ellipse); Canvas.SetZIndex(ellipse.Shape, 0); Canvas.SetLeft(ellipse.Shape, ellipse.TopLeft.X); Canvas.SetTop(ellipse.Shape, ellipse.TopLeft.Y); this.Canvas.Children.Add(ellipse.Shape); this.OnEllipseAdded?.Invoke(this, new EllipseListChangedEventArgs(ellipse, this)); }
/// <summary> /// Removes ellipse from list /// </summary> /// <param name="ellipse"><see cref = "EllipseInfo"/> to remove</param> public void RemoveEllipse(EllipseInfo ellipse) { this.ellipses.Remove(ellipse); if (ReferenceEquals(this.currentEllipse, ellipse)) { this.currentEllipse = null; } Canvas.Children.Remove(ellipse.Shape); this.OnEllipseRemoved?.Invoke(this, new EllipseListChangedEventArgs(ellipse, this)); }
/// <summary> /// Clears list of <see cref = "EllipseInfo"/> /// </summary> public void Clear() { foreach (EllipseInfo ellipse in this.ellipses) { this.OnEllipseRemoved?.Invoke(this, new EllipseListChangedEventArgs(ellipse, this)); } this.currentEllipse = null; this.ellipses.Clear(); Canvas.Children.Clear(); }
/// <summary> /// Shift <see cref = "EllipseInfo"/> so it has top left <see cref = "Point"/> similar to given /// </summary> /// <param name="ellipse"><see cref = "EllipseInfo"/> to shift</param> /// <param name="shift"><see cref = "Point"/> destination</param> private void MoveEllipse(EllipseInfo ellipse, Point shift) { ellipse.TopLeft = new Point(ellipse.TopLeft.X + shift.X, ellipse.TopLeft.Y + shift.Y); Canvas.SetTop(ellipse.Shape, ellipse.TopLeft.Y); Canvas.SetLeft(ellipse.Shape, ellipse.TopLeft.X); }