2017-09-16 37 views
1

下面的代碼工作並通過偏移量(200,200)爲關聯的GlyphRun對象設置動畫,並且文本沿着紅色箭頭指示的路徑移動,持續時間爲1.250秒:WPF - 更簡單的幾何動畫方法,無TranslateTransform

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

這是正在動畫的TranslateTransform的屬性。該對象被初始化爲(0, 0),但隨着動畫的進展,該對象的XY屬性被修改。實際上,這種修改會導致字形按照動畫迭代移動。

至於它是否可以以更簡單的方式實現,那麼......這是一個「看似人眼」的東西。就我個人而言,我認爲在XAML中聲明動畫而不是編寫代碼來執行動畫「更簡單」。所以從這個意義上說,肯定......絕對可以做得更簡單。

除此之外,如果這是正在制定的所有是簡單的文字,在我看來,將某一TextBlockCanvas和動畫是TextBlock對象的Canvas.LeftCanvas.Top性能也將被視爲簡單。坦白地說,任何其他選項可能被認爲更簡單。或者不是,取決於你對「簡單」的想法是什麼。