0

他のアニメーションと一緒にタイマーで実行されるアニメーションがあります。イベントがトリガーされたときに画像ソース ファイルを変更できるようにしたいのですが、現在 element.Source (画像である現在のキャンバス オブジェクトに等しい要素) にアクセスできません。

public static void Clouds(Canvas canvas, int boundry)
{
    var random = new Random();
    foreach (FrameworkElement element in canvas.Children)
    {
        var elementName = Regex.Split(element.Name, "_");
        if (elementName[0] == "cloud")
        {
            if (Canvas.GetLeft(element) < canvas.ActualWidth + element.Width)
            {
                Canvas.SetLeft(element, Canvas.GetLeft(element) + 1);
            } else
            {
                // Change image source file here.
                Canvas.SetTop(element, random.Next(0 - ((int)element.Height / 2), Core.GetPercentage((int)canvas.ActualHeight, boundry)));
                Canvas.SetLeft(element, 0 - element.Width);
            }
        }
    }
}

どんな助けでも素晴らしいでしょう、ありがとう。

4

1 に答える 1

0

FrameworkElement には Source と呼ばれるプロパティがないため、必要な画像要素をキャストまたは選択する必要があります。

このようなものはうまくいくかもしれません

        public static void Clouds(Canvas canvas, int boundry)
        {
            var random = new Random();
            foreach (var image in canvas.Children.OfType<Image>())
            {
                if (image.Name.Contains("cloud_"))
                {
                    if (Canvas.GetLeft(image) < canvas.ActualWidth + image.Width)
                    {
                        Canvas.SetLeft(image, Canvas.GetLeft(image) + 1);
                    }
                    else
                    {
                        Canvas.SetTop(image, random.Next(0 - ((int)image.Height / 2), Core.GetPercentage((int)canvas.ActualHeight, boundry)));
                        Canvas.SetLeft(image, 0 - image.Width);
                    }
                }
            }
        }

これで、var "image" が Image であるため、source プロパティにアクセスできるようになります。

于 2012-11-27T22:46:35.253 に答える