Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
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);
}
На заметку! Возможно, вы заметили, что объекты
Ellipse
Rectangle
Line
canvasDrawingArea_MouseLeftButtonDown()
В коде проверяется переменная-член
_currentShape
Shape
Canvas
MouseButtonEventArgs
UIElement
Canvas
Shape
Удаление прямоугольников, эллипсов и линий с поверхности Canvas
Имея в распоряжении элемент
Canvas
VisualTreeHelper
System.Windows.Media
MouseRightButtonDown
Canvas
private 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);
}
}
Метод начинается с получения точных координат (
х
у
Canvas
VisualTreeHelper.HitTest()
HitTestResult
null
UIElement
Canvas
HitTestResult
null
VisualHit
UIElement
Shape
Canvas
UIElement