0

子アイテムを追加する前にキャンバスを更新する方法があるかどうか疑問に思っていますか?私はこのコードを持っています、それは私に水色のストロークで黒い楕円を描きます。ここで、プログラムの起動時に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);
4

2 に答える 2

3

スライダー値にChangedeventuは次のコードを入力する必要があります

 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;
            }
        }
    }
于 2013-01-07T17:46:37.280 に答える
0

またはそれより短い

// using System.Linq;

foreach (var ellipse in canvas1.Children.OfType<Ellipse>())
{
    ellipse.StrokeThickness = sliderThickness.Value;
}
于 2013-01-07T17:59:55.997 に答える