以下代码的工作原理为关联的GlyphRun
对象设置动画,偏移量为(200,200),文本沿红色箭头指示的路径移动,持续时间为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
的必要性。
上述动画能否以更简单的方式实现?
答案 0 :(得分:1)
正在动画的TranslateTransform
的属性。该对象初始化为(0, 0)
,但随着动画的进行,该对象的X
和Y
属性将被修改。事实上,这种修改会导致字形按动画迭代移动。
至于是否可以通过更简单的方式实现,那么......这是观察者眼中的一点点"那类的东西。我个人认为它更简单"在XAML中声明动画而不是编写代码隐藏来执行它。所以从这个意义上讲,确定......绝对可以做得更简单。
除此之外,如果所绘制的所有内容都是简单的文字,我认为在TextBlock
中放置Canvas
并为TextBlock
对象设置动画效果' s Canvas.Left
和Canvas.Top
属性也会被认为更简单。坦率地说,任何数量的其他选项可能被认为更简单。或者不是,取决于你的想法"更简单"是