首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图将一组线条动画化

试图将一组线条动画化
EN

Stack Overflow用户
提问于 2014-09-15 20:48:59
回答 1查看 111关注 0票数 3

我在做一个类似这个的图案..。

通过开始每个线列阵的故事板并执行计算。虽然,我有困难,确定如何在同一时间启动多个线动画。

到目前为止,我尝试过的是:

代码语言:javascript
复制
Canvas canMain = new Canvas();
canMain.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
canMain.Margin = new Thickness(50, 0, 0, 0);
Line[] line = new Line[6];
Storyboard sb;
DoubleAnimation da, da1;
for (int i = 0; i < line.Count(); i++)
{
    line[i].Stroke = Brushes.Red;
    line[i].StrokeThickness = 1;
    line[i].X1 = i+11;
    line[i].Y1 = i+11;
    canMain.Children.Add(line[i]);
    sb = new Storyboard();
    da = new DoubleAnimation(line[i].Y1, 30, new Duration(TimeSpan.FromSeconds(0.5)));
    da1 = new DoubleAnimation(line[i].X1, 30, new Duration(TimeSpan.FromSeconds(0.5)));
    Storyboard.SetTargetProperty(da, new PropertyPath("(Line.Y2)"));
    Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X2)"));
    sb.Children.Add(da);
    sb.Children.Add(da1);
    line[i].BeginStoryboard(sb);
}

如你所知,我还没有开始计算它背后的数字,因为我似乎不能同时触发故事板。还是我应该把所有的doubleAnimations存储在同一个故事板中?这两种方法都给我带来了堆叠溢出。我对WPF C#编程比较陌生,所以任何建议或进一步的信息都会非常有帮助。

编辑员额以包括例外情况:

System.Reflection.TargetInvocationException类型的未处理异常发生在PresentationFramework.dll中

附加信息:调用的目标引发了异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 13:28:23

你的代码基本上没问题。我只需要做一点小小的改变就可以了。我创建了一个名为new_Window的新窗口来进行测试,并在其上创建了一个名为canMainCanvas对象。然后,我向您的代码中添加了一行代码:在您的for循环中,我必须添加line[i] = new Line();,因为在这一点上行对象为空。

代码语言:javascript
复制
  public new_Window()
  {
     InitializeComponent();
     AnimateThis();
  }

  private void AnimateThis()
  {
     canMain.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
     canMain.Margin = new Thickness(50, 0, 0, 0);
     Line[] line = new Line[6];
     Storyboard sb;
     DoubleAnimation da, da1;
     for (int i = 0; i < line.Count(); i++)
     {
        line[i] = new Line();
        line[i].Stroke = Brushes.Red;
        line[i].StrokeThickness = 1;
        line[i].X1 = i+11;
        line[i].Y1 = i+11;
        canMain.Children.Add(line[i]);
        sb = new Storyboard();
        da = new DoubleAnimation(line[i].Y1, 30, new Duration(TimeSpan.FromSeconds(0.5)));
        da1 = new DoubleAnimation(line[i].X1, 30, new Duration(TimeSpan.FromSeconds(0.5)));
        Storyboard.SetTargetProperty(da, new PropertyPath("(Line.Y2)"));
        Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X2)"));
        sb.Children.Add(da);
        sb.Children.Add(da1);
        line[i].BeginStoryboard(sb);
     }
  }

我首先将Canvas添加到窗口,因为我希望确保有一个可以渲染的表面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25856663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档