Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态更改画布对象的图像源_C#_Wpf - Fatal编程技术网

C# 动态更改画布对象的图像源

C# 动态更改画布对象的图像源,c#,wpf,C#,Wpf,我有一个在计时器上运行的动画和一些其他动画。我希望能够在触发事件时更改图像源文件,但我当前无法访问element.source(元素等于当前画布对象,即图像) publicstaticvoidclouds(画布,int-boundry) { var random=新的random(); foreach(canvas.Children中的FrameworkElement元素) { var elementName=Regex.Split(element.Name,“”); if(elementNam

我有一个在计时器上运行的动画和一些其他动画。我希望能够在触发事件时更改图像源文件,但我当前无法访问element.source(元素等于当前画布对象,即图像)

publicstaticvoidclouds(画布,int-boundry)
{
var random=新的random();
foreach(canvas.Children中的FrameworkElement元素)
{
var elementName=Regex.Split(element.Name,“”);
if(elementName[0]=“cloud”)
{
if(Canvas.GetLeft(元素)

任何帮助都会很好,谢谢。

因为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);
                    }
                }
            }
        }
publicstaticvoidclouds(画布,int-boundry)
{
var random=新的random();
foreach(canvas.Children.OfType()中的var图像)
{
if(image.Name.Contains(“cloud”)
{
if(Canvas.GetLeft(image)

现在,您将能够访问源属性,因为var“image”是一个图像

您在画布中寻找什么类型的元素。Children?所有的子元素都是图像,所以只需一个图像谢谢,我将检查此项并向HQ报告
        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);
                    }
                }
            }
        }