Example #1
0
        //Обработка действий при нажатии на ЛКМ в рабочей области
        private void WorkSpace_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            thickness     = Convert.ToDouble(FigureThickness.Text);
            mousePosition = Mouse.GetPosition(WorkSpace);
            Color           color        = ColorPickerButton.SelectedColor.Value;
            SolidColorBrush myBrush      = new(color);
            IInputElement   inputElement = Mouse.DirectlyOver;//Поиск объектов под мышью

            if (CreateLineButton.IsChecked == false)
            {
                if (inputElement.GetType() != typeof(Canvas))
                {
                    currentFigure = (Shape)inputElement;
                }
            }
            if (selectedAction == ButtonType.NoneB)
            {
                if (inputElement is Polyline && e.ClickCount == 2)
                {
                    graphicElements.InsertPointIntoLine((Shape)inputElement, mousePosition);
                }
            }
            else if (selectedAction == ButtonType.rectB)
            {
                currentFigure = graphicElements.CreateRectangle(new Rect(mousePosition.X, mousePosition.Y, mousePosition.X, mousePosition.Y), myBrush, Convert.ToInt16(FigureThickness.Text));
            }
            else if (selectedAction == ButtonType.lineB)
            {
                if (polylinestate == false)
                {
                    if (inputElement is Polyline)
                    {
                        graphicElements.InsertPointIntoLine((Shape)inputElement, mousePosition);
                    }
                    else
                    {
                        polylinestate = true;
                        currentFigure = graphicElements.AddLine(mousePosition, myBrush, thickness);
                    }
                }
                else
                {
                    if (currentFigure != null)
                    {
                        if (e.ClickCount == 2)
                        {
                            polylinestate = false;
                        }
                        else
                        {
                            graphicElements.AddPointToLine(currentFigure, mousePosition);
                        }
                    }
                }
            }
            else if (selectedAction == ButtonType.fillB)
            {
                if (inputElement is not Canvas)
                {
                    GraphicElements.Fill(currentFigure, ColorPickerButton.SelectedColor.Value);
                }
            }
            else if (selectedAction == ButtonType.FillBorderB)
            {
                if (inputElement is not Canvas)
                {
                    GraphicElements.FillBorder(currentFigure, ColorPickerButton.SelectedColor.Value, thickness);
                }
            }
            else if (selectedAction == ButtonType.deleteB)
            {
                if (inputElement is not Canvas)
                {
                    graphicElements.DeleteFigure(currentFigure);
                }
            }
            else if (selectedAction == ButtonType.moveB)
            {
                ClickCount = e.ClickCount;
            }
            else if (selectedAction == ButtonType.scaleB)
            {
                if (inputElement is not Canvas)
                {
                    hitType = BorderCheck(currentFigure, mousePosition);
                }
            }
            previousMouseState = 1;
        }