Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
private void CanvasDrawingArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ Shape shapeToRender = null; // Сконфигурировать корректную фигуру для рисования. switch (_currentShape) { case SelectedShape.Circle: shapeToRender = new Ellipse() { Fill = Brushes.Green, Height = 35, Width = 35 }; break; case SelectedShape.Rectangle: shapeToRender = new Rectangle() { Fill = Brushes.Red, Height = 35, Width = 35, RadiusX = 10, RadiusY = 10 }; break; case SelectedShape.Line: shapeToRender = new Line() { Stroke = Brushes.Blue, StrokeThickness = 10, X1 = 0, X2 = 50, Y1 = 0, Y2 = 50, StrokeStartLineCap= PenLineCap.Triangle, StrokeEndLineCap = PenLineCap.Round }; break; default: return; }<b> // Установить левый верхний угол для рисования на холсте.</b> Canvas.SetLeft(shapeToRender, e.GetPosition(canvasDrawingArea).X); Canvas.SetTop(shapeToRender, e.GetPosition(canvasDrawingArea).Y);<b> // Нарисовать фигуру.</b> canvasDrawingArea.Children.Add(shapeToRender);}На заметку! Возможно, вы заметили, что объекты
EllipseRectangleLinecanvasDrawingArea_MouseLeftButtonDown()В коде проверяется переменная-член
_currentShapeShapeCanvasMouseButtonEventArgsUIElementCanvasShapeУдаление прямоугольников, эллипсов и линий с поверхности Canvas
Имея в распоряжении элемент
CanvasVisualTreeHelperSystem.Windows.MediaMouseRightButtonDownCanvasprivate void CanvasDrawingArea_MouseRightButtonDown(object sender, MouseButtonEventArgs e){ // Сначала получить координаты x,y позиции, // где пользователь выполнил щелчок. Point pt = e.GetPosition((Canvas)sender); // Использовать метод HitTestO класса VisualTreeHelper, чтобы // выяснить, щелкнул ли пользователь на элементе внутри Canvas. HitTestResult result = VisualTreeHelper.HitTest(canvasDrawingArea, pt); // Если переменная result не равна null, то щелчок произведен на фигуре. if (result != null) { // Получить фигуру, на которой совершен щелчок, и удалить ее из Canvas. canvasDrawingArea.Children.Remove(result.VisualHit as Shape); }}Метод начинается с получения точных координат (
хуCanvasVisualTreeHelper.HitTest()HitTestResultnullUIElementCanvasHitTestResultnullVisualHitUIElementShapeCanvasUIElement