2013-01-07 93 views
0

我想知道如何在添加子项之前刷新画布的方法? 我有这段代码,它绘制了一个浅蓝色的中风的黑色椭圆。现在我想在程序启动时更改StrokeThickness(我有一个滑块来定义StrokeThickness)。问题是StrokeThickness被改变了,但是只有当我重绘椭圆时,但我希望在我移动滑块时做出改变。有任何想法吗?谢谢!Wpf画布刷新

  //this code is in canvas_MouseDown 
      double smt = sliderThickness.Value; 

      //krog 
      elip = new Ellipse 
      { 
       Width = 100, 
       Height = 100, 
       Fill = Brushes.Black, 
       Stroke = Brushes.LightBlue, 
       StrokeThickness = smt, 
      }; 

      Canvas.SetLeft(elip, mouseX - 50); 
      Canvas.SetTop(elip, mouseY - 50); 

      canvas1.Children.Add(elip); 
+0

这应该没有 “刷新” 工作。只需添加一次椭圆*,然后仅更改现有椭圆的StrokeThickness。 – Clemens

+0

但是我如何访问现有的Ellipse? –

回答

0

或更短

// using System.Linq; 

foreach (var ellipse in canvas1.Children.OfType<Ellipse>()) 
{ 
    ellipse.StrokeThickness = sliderThickness.Value; 
} 
3
在滑块值Changedevent

u必须把下面的代码

private void sliderThickness_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     foreach (var item in canvas1.Children) 
     { 
      if (item is Ellipse) 
      { 
       var elip = item as Ellipse; 
       elip.StrokeThickness = sliderThickness.Value; 
      } 
     } 
    } 
+0

Sanjay Patel非常感谢,它的工作原理! :) –