WPF - 没有TranslateTransform的更简单的几何动画方法

时间:2017-09-16 21:47:35

标签: c# wpf

以下代码的工作原理为关联的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); 

enter image description here

但是,由于其零偏移点,我不了解所涉及的TranslateTransform的必要性。

上述动画能否以更简单的方式实现?

1 个答案:

答案 0 :(得分:1)

正在动画的TranslateTransform的属性。该对象初始化为(0, 0),但随着动画的进行,该对象的XY属性将被修改。事实上,这种修改会导致字形按动画迭代移动。

至于是否可以通过更简单的方式实现,那么......这是观察者眼中的一点点"那类的东西。我个人认为它更简单"在XAML中声明动画而不是编写代码隐藏来执行它。所以从这个意义上讲,确定......绝对可以做得更简单。

除此之外,如果所绘制的所有内容都是简单的文字,我认为在TextBlock中放置Canvas并为TextBlock对象设置动画效果' s Canvas.LeftCanvas.Top属性也会被认为更简单。坦率地说,任何数量的其他选项可能被认为更简单。或者不是,取决于你的想法"更简单"是