Example #1
0
        /// <summary>
        /// Производим смещение координат вершин линии
        /// </summary>
        private void MoveFigure()
        {
            if (_moveToPoint == default(Point) || _moveFromPoint == default(Point) || _currentPolyline == null)
            {
                return;
            }
            var          deltaX       = _moveToPoint.X - _moveFromPoint.X;
            var          deltaY       = _moveToPoint.Y - _moveFromPoint.Y;
            List <Point> tmpListPoint = new List <Point>();

            foreach (Point pt in _currentPolyline.Points)
            {
                tmpListPoint.Add(new Point(pt.X + deltaX, pt.Y + deltaY));
            }
            _currentPolyline.Points.Clear();
            foreach (Point pt in tmpListPoint)
            {
                _currentPolyline.Points.Add(new Point(pt.X, pt.Y));
            }
            tmpListPoint   = null;
            _moveToPoint   = default(Point);
            _moveFromPoint = default(Point);
            ClearPolylineBindings(_currentPolyline);
            _currentPolyline = null;
            ClearMarkers();
            _viewModel.DrawMode = DrawMode.EditFigure;
            DrawTable.InvalidateVisual();
        }
Example #2
0
 /// <summary>
 /// Сброс всех переменных, используемых для выделения линии
 /// </summary>
 private void ResetAllSelected()
 {
     ClearMarkers();
     ClearPolylineBindings(_currentPolyline);
     _currentPolyline               = null;
     _currentPoint                  = default(Point);
     _pointIndex                    = null;
     _viewModel.DrawMode            = DrawMode.None;
     _marker                        = null;
     _viewModel.AddNewLineIsChecked = false;
     _viewModel.EditLineIsChecked   = false;
     DrawTable.InvalidateVisual();
 }
Example #3
0
 /// <summary>
 /// Удаление ломаной линии
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnDelLine_Click(object sender, RoutedEventArgs e)
 {
     if (_viewModel.DrawMode != DrawMode.EditFigure)
     {
         return;
     }
     if (_currentPolyline == null)
     {
         return;
     }
     ClearMarkers();
     DrawTable.Children.Remove(_currentPolyline);
     _currentPolyline = null;
     _pointIndex      = null;
     _marker          = null;
     DrawTable.InvalidateVisual();
 }
Example #4
0
 /// <summary>
 /// Обработчик кнопки удаления вершины ломаной линии
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnDelVertex_Click(object sender, RoutedEventArgs e)
 {
     //Удаление вершин ломаной линии
     if (_viewModel.DrawMode != DrawMode.EditFigure)
     {
         return;
     }
     if (_pointIndex == null || _marker == null || _currentPolyline == null)
     {
         return;
     }
     _currentPolyline.Points.RemoveAt(_pointIndex.Value);
     _marker.Height = 0;
     _marker.Width  = 0;
     _pointIndex    = null;
     _marker        = null;
     DrawTable.InvalidateVisual();
 }
Example #5
0
 private void DrawTable_MouseMove(object sender, MouseEventArgs e)
 {
     //Отрисовка перемещения вершины ломаной линии при добавлении и при редактировании вершин
     if ((_viewModel.DrawMode == DrawMode.AddNewFigure || _viewModel.DrawMode == DrawMode.MoveVertex) &&
         _currentPoint != null &&
         _currentPolyline != null &&
         _currentPolyline.Points.Count > 1)
     {
         _currentPolyline.Points.RemoveAt(_pointIndex.Value);
         _currentPoint.X = e.GetPosition(DrawTable).X;
         _currentPoint.Y = e.GetPosition(DrawTable).Y;
         _currentPolyline.Points.Insert(_pointIndex.Value, _currentPoint);
         if (_marker != null)
         {
             Canvas.SetLeft(_marker, _currentPoint.X - 5);
             Canvas.SetTop(_marker, _currentPoint.Y - 5);
         }
         DrawTable.InvalidateVisual();
     }
 }
Example #6
0
        private void BtnLoadFromFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog myDialog = new OpenFileDialog();

            myDialog.Filter          = "Векторные рисунки(*.XAML)|*.XAML" + "|Все файлы (*.*)|*.* ";
            myDialog.CheckFileExists = true;
            myDialog.Multiselect     = true;
            if (myDialog.ShowDialog() == true)
            {
                DrawTable.Children.Clear();
                _viewModel.CurrentFileName = myDialog.FileName;

                using (FileStream fs = File.Open(_viewModel.CurrentFileName, FileMode.Open, FileAccess.Read))
                {
                    Canvas FromFile = XamlReader.Load(fs) as Canvas;
                    foreach (Polyline pl in FromFile.Children)
                    {
                        if (pl.Points.Count != 0)
                        {
                            if (pl.Stroke != null)
                            {
                                _viewModel.CurrentPickColor = ((SolidColorBrush)(pl.Stroke)).Color;
                            }

                            _viewModel.CurrentThikness = DoubleToThikness(pl.StrokeThickness);


                            AddNewLine();
                            foreach (Point pt in pl.Points)
                            {
                                _currentPolyline.Points.Add(pt);
                            }
                        }
                    }
                }
                DrawTable.InvalidateVisual();
                ResetAllSelected();
            }
        }