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# WPF路径动画错误_C#_Wpf - Fatal编程技术网

C# WPF路径动画错误

C# WPF路径动画错误,c#,wpf,C#,Wpf,我已经设置了一个故事板,可以沿定义的路径为椭圆设置动画,如图所示:,并进行了一些修改以满足我的需要。但是,当我尝试运行我的程序时,它会给我一个AnimationException: 无法使用“System.Windows.Media.Animation.PointAnimationUsingPath”对“System.Windows.Media.Ellipsegometry”上的“Center”属性设置动画。有关详细信息,请参阅内部异常。 内部异常只是声明:值不在预期范围内。。我以前从未使用过故

我已经设置了一个故事板,可以沿定义的路径为椭圆设置动画,如图所示:,并进行了一些修改以满足我的需要。但是,当我尝试运行我的程序时,它会给我一个AnimationException:

无法使用“System.Windows.Media.Animation.PointAnimationUsingPath”对“System.Windows.Media.Ellipsegometry”上的“Center”属性设置动画。有关详细信息,请参阅内部异常。

内部异常只是声明:
值不在预期范围内。
。我以前从未使用过故事板,所以我不知道在这里该做什么

编辑:这是我的代码。它经历了一些变化,我还没有删除旧的评论,所以接受原样

        Location current = null;// locationEnum.Current;
        Point start = new Point();
        var segment = new PolyBezierSegment();
        foreach (var location in locations) {
            if (current == null) {
                current = location;
                start = new Point(current.X, current.Y);
            }
            else {
                //MessageBox.Show(location.X.ToString() + "," + location.Y.ToString());
                segment.Points.Add(new Point(location.X, location.Y));
                //current = location;
            }
        }
        //MessageBox.Show(start.ToString());
        var ellipseGeometry = new EllipseGeometry(start, 15, 15);
        var ellipsePath = new System.Windows.Shapes.Path {
            Fill = new SolidColorBrush(Colors.Red),
            Data = ellipseGeometry,
            Margin = new Thickness(15)
        };
        cnvMap.Children.Add(ellipsePath);
        var animationPath = new PathGeometry();
        var figure = new PathFigure();
        figure.StartPoint = start;
        figure.Segments.Add(segment);
        animationPath.Figures.Add(figure);
        animationPath.Freeze();
        var animation = new PointAnimationUsingPath {
            PathGeometry = animationPath,
            Duration = TimeSpan.FromSeconds(10)
        };
        Storyboard.SetTarget(animation, ellipseGeometry);
        Storyboard.SetTargetProperty(
            animation, new PropertyPath(EllipseGeometry.CenterProperty));
        Storyboard storyboard = new Storyboard();
        storyboard.Children.Add(animation);
        ellipsePath.Loaded += (sender, e) => {
            //MessageBox.Show("Horray");
            storyboard.Begin();
        };

我无法解决您的问题,但我可以告诉您如何调试它:

  • 选项1:用尽可能接近您链接的示例代码替换您的代码(并且预期可以工作)。然后慢慢地开始应用您的更改,直到它不再工作。您最近所做的更改很可能是问题的原因。如果这不起作用,请在此处发布代码,同时发布有问题代码行的两个版本

  • 选项2:告诉VisualStudio停止所有异常(菜单栏/Debug/exceptions),并尝试捕捉引发内部异常的时刻。检查调用堆栈和“局部变量”窗口,找出哪个值“超出预期范围”


    • 我无法解决您的问题,但我可以告诉您如何调试它:

      • 选项1:用尽可能接近您链接的示例代码替换您的代码(并且预期可以工作)。然后慢慢地开始应用您的更改,直到它不再工作。您最近所做的更改很可能是问题的原因。如果这不起作用,请在此处发布代码,同时发布有问题代码行的两个版本

      • 选项2:告诉VisualStudio停止所有异常(菜单栏/Debug/exceptions),并尝试捕捉引发内部异常的时刻。检查调用堆栈和“局部变量”窗口,找出哪个值“超出预期范围”


      哪项修改导致动画失败?将代码、错误发布到vague以提供帮助。哪项修改导致动画失败?将代码、错误发布到vague以提供帮助。