Пример #1
0
        /// <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");
            }
        }
Пример #2
0
        /// <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}");
            }
        }
Пример #3
0
        //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;
            }
        }
Пример #4
0
 /// <summary>
 /// Clear window
 /// </summary>
 /// <param name="obj"></param>
 private void ClearWindow(object obj)
 {
     Polylines.Clear();
     OnPropertyChanged("Polylines");
 }