/// <summary> /// Open file with shape /// </summary> /// <param name="obj"></param> private void OpenFile(object obj) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.DefaultExt = ".xml"; openFileDialog.Filter = "XML documents (.xml)|*.xml"; if (openFileDialog.ShowDialog() == true) { string fileName = openFileDialog.FileName; WindowTitle = fileName; TitleChanged?.Invoke(WindowTitle); List <Shape> polylines = new List <Shape>(); XmlSerializer serializer = new XmlSerializer(typeof(List <Shape>)); using (XmlReader reader = XmlReader.Create(fileName)) { polylines = (List <Shape>)serializer.Deserialize(reader); } Polylines.Clear(); for (int i = 0; i < polylines.Count; ++i) { Polylines.Add(new Polyline() { Name = String.Format("Polyline_{0}", i + 1), Stroke = new SolidColorBrush(polylines[i].ShapeColor), Points = polylines[i].Points }); } OnPropertyChanged("Polylines"); } }
/// <summary> /// Method for painting shape /// </summary> /// <param name="obj"></param> private void DrawClick(object obj) { try { Point mousePoint = Mouse.GetPosition((IInputElement)obj); CurrentPolyline.Stroke = Brushes.Black; CurrentPolyline.Points.Add(mousePoint); NewPointAdded?.Invoke(); if (EndDrawing && CurrentPolyline.Points.Count >= 2) { ColorsWindow colorWin = new ColorsWindow(this); if (colorWin.ShowDialog() == true) { CurrentPolyline.Stroke = new SolidColorBrush(CurrentColor); } CurrentPolyline.Name = String.Format("Polyline_{0}", Polylines.Count + 1); Polylines.Add(CurrentPolyline); CurrentPolyline = new Polyline(); OnPropertyChanged("Polylines"); CountEdges = 0; EndDrawing = false; JustDrawn?.Invoke(); } if (EndDrawing && CurrentPolyline.Points.Count < 2) { throw new InvalidOperationException("Not enough points"); } } catch (Exception e) { MessageBox.Show($"Error: {e.Message}"); } }
//Painting private void DrawClick(object obj) { Point mousePoint = Mouse.GetPosition((IInputElement)obj); CurrentPolyline.Stroke = Brushes.Black; CurrentPolyline.Points.Add(mousePoint); if (EndDrawing && CurrentPolyline.Points.Count >= 2) { ColorsWindow colorWin = new ColorsWindow(this); if (colorWin.ShowDialog() == true) { CurrentPolyline.Stroke = new SolidColorBrush(CurrentColor); } CurrentPolyline.Name = String.Format("Polyline_{0}", Polylines.Count + 1); Polylines.Add(CurrentPolyline); CurrentPolyline = new Polyline(); OnPropertyChanged("Polylines"); CountEdges = 0; EndDrawing = false; } }
/// <summary> /// Clear window /// </summary> /// <param name="obj"></param> private void ClearWindow(object obj) { Polylines.Clear(); OnPropertyChanged("Polylines"); }