【问题标题】:Wpf canvas refreshWpf画布刷新
【发布时间】:2012-12-21 11:05:01
【问题描述】:

我想知道是否有办法在向画布添加子项之前刷新画布? 我有这个代码,它给我画了一个带有浅蓝色笔划的黑色椭圆。现在我想在程序启动时更改 StrokeThickness(我有一个滑块来定义 StrokeThickness)。问题是 StrokeThickness 发生了变化,但前提是我重绘了椭圆,但我希望在移动滑块时进行更改。有任何想法吗?谢谢!

            //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);

【问题讨论】:

  • 这应该可以在没有“刷新”的情况下工作。只需添加 Ellipse once,然后再更改现有 Ellipse 的 StrokeThickness。
  • 但是我如何访问现有的 Ellipse?

标签: wpf canvas refresh


【解决方案1】:

在滑块值更改事件中你必须输入以下代码

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

【讨论】:

    【解决方案2】:

    或者更短

    // using System.Linq;
    
    foreach (var ellipse in canvas1.Children.OfType<Ellipse>())
    {
        ellipse.StrokeThickness = sliderThickness.Value;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2014-03-06
      • 1970-01-01
      相关资源
      最近更新 更多