2013-10-08 33 views
0

現在我想在鼠標單擊事件的畫布上繪製一個矩形。這裏是我的代碼:繪製矩形並在每次點擊鼠標時進行更新

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); 
    } 
+0

你設置了'rect = null',但是你不要從Canvas中刪除舊的矩形。 – Vladimir

回答

3

要調用:

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

然後:

canvas1.Children.Add(rect); 

這將增加另一個Rectangle到您的Canvas.Children集合。如果你想先刪除舊的,那麼先調用它:

canvas1.Children.Remove(rect); 
+0

它的工作表示感謝。 – user2754279