以下代码以偏移量(200,200)对关联的GlyphRun对象进行工作和动画,文本沿着红色箭头指示的路径移动,持续时间为1.250秒:
Geometry grg = _glyphRun.BuildGeometry();
drawingContext.DrawGeometry(Brushes.Black, null, grg);
grg.Transform = new TranslateTransform(0, 0);
Duration duration = new Duration(new TimeSpan(0, 0, 0, 1, 250));
DoubleAnimation anim = new DoubleAnimation(200, duration);
anim.EasingFunction = new QuarticEase();
grg.Transform.BeginAnimation(TranslateTransform.XProperty, anim);
grg.Transform.BeginAnimation(TranslateTransform.YProperty, anim);

然而,我不理解TranslateTransform所涉及的需求,因为它的零偏移点。
能否以更简单的方式实现上述动画?
发布于 2017-09-17 01:25:00
正在被动画化的是TranslateTransform的属性。对象被初始化为(0, 0),但是随着动画的发展,该对象的X和Y属性将被修改。事实上,正是这种修改导致了字形在动画中被迭代地移动。
至于能否以一种更简单的方式实现,好吧,…有点像“旁观者之眼”之类的东西。就我个人而言,我认为在XAML中声明动画“更简单”,而不是编写代码。所以在这个意义上,当然,…当然可以做得更简单。
除此之外,如果所绘制的只是简单的文本,在我看来,在Canvas中放置一个Canvas并动画化TextBlock对象的Canvas.Left和Canvas.Top属性也会被认为更简单。坦率地说,任何其他选择都可以被认为更简单。或者不是,取决于你对“更简单”的看法。
https://stackoverflow.com/questions/46258719
复制相似问题