Теперь я хочу нарисовать прямоугольник на холсте при щелчке мыши на событии. Вот мой код:Нарисуйте прямоугольник и обновите его при каждом щелчке мышью
protected void imageIR_MouseClick(object sender, System.Windows.Input.MouseEventArgs e)
{
...
System.Windows.Point startPoint = e.GetPosition(canvas1);
rect = new System.Windows.Shapes.Rectangle
{
Stroke = System.Windows.Media.Brushes.LightBlue,
StrokeThickness = 10
};
Canvas.SetLeft(rect, startPoint.X);
Canvas.SetTop(rect, startPoint.Y);
canvas1.Children.Add(rect);
}
private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
rect = null;
}
Он отлично работает каждый раз, я щелкнул мышью, но почему старый прямоугольник еще на холсте, когда я перекроить новый? Что я сделал не так?
EDIT Теперь это правильно, я не больше, и вместо этого нужно Canvas_MouseMove:
protected void imageIR_MouseClick(object sender, System.Windows.Input.MouseEventArgs e)
{
...
canvas1.Children.Remove(rect);
System.Windows.Point startPoint = e.GetPosition(canvas1);
rect = new System.Windows.Shapes.Rectangle
{
Stroke = System.Windows.Media.Brushes.LightBlue,
StrokeThickness = 10
};
Canvas.SetLeft(rect, startPoint.X);
Canvas.SetTop(rect, startPoint.Y);
canvas1.Children.Add(rect);
}
Вы устанавливаете 'rect = null', но вы не удаляете старый прямоугольник из Canvas. – Vladimir