代码之家  ›  专栏  ›  技术社区  ›  user2754279

绘制矩形并在每次单击鼠标时更新

  •  0
  • user2754279  · 技术社区  · 11 年前

    现在我想在画布上用鼠标点击事件绘制一个矩形。这是我的代码:

        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;
        }
    

    每次我点击鼠标都能很好地工作,但为什么当我重新绘制新的矩形时,旧的矩形仍然在画布上?我做错了什么?

    编辑现在是正确的,我不再需要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);
        }
    
    1 回复  |  直到 11 年前
        1
  •  3
  •   Sheridan    11 年前

    您正在呼叫:

    rect = new System.Windows.Shapes.Rectangle(...);
    

    然后:

    canvas1.Children.Add(rect);
    

    这将增加 另一个 Rectangle 进入您的 Canvas.Children 收集如果您想先删除旧的,请先调用此命令:

    canvas1.Children.Remove(rect);