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

于 2012-11-27T22:46:35.253 回答