按照評論中的要求,我解釋了我最終用來製作我的動物重刑:
我依靠Animated Polyline Interpolations in Silverlight和或多或少直接使用此代碼 - 「竊取」PointCollectionInterpolator.cs類。
然後,我有我的方法來創建我需要的多邊形,並準備動畫:
private void CreatePolygon(TextBox txtbx, string prop, Color curcol)
{
PointCollectionInterpolator pci = new PointCollectionInterpolator();
pci.Points1 = new PointCollection() // Start Points
{
new Point(...),
new Point(...),
new Point(...),
new Point(...),
};
pci.Points2 = new PointCollection() // End Points
{
new Point(...),
new Point(...),
new Point(...),
new Point(...),
};
Polygon tmpply = new Polygon();
LayoutRoot.Children.Add(tmpply);
tmpply.Points = pci.InterpolatedPoints;
DoubleAnimation animpci = new DoubleAnimation();
animpci.Duration = someDuration;
animpci.From = 0.0;
animpci.To = 1.0;
Storyboard.SetTarget(animpci, pci);
Storyboard.SetTargetProperty(animpci, new PropertyPath("(Progress)"));
myStoryBoard.Children.Add(animpci);
}
然後在一些隨機事件處理,我開始動畫。另外,所以我可以重複使用該方法,將端點集合移動到起點集合中,並用新的端點更新插補器。 (記住設置進度爲0.0 ...)因此,每當處理程序觸發時,多邊形將無縫地變形爲新的。
private void SomeEventHandler(object sender, RoutedEventArgs e)
{
PointCollectionInterpolator polygonPCI =
this.referenceToPointCollectionInterpolator;
polygonPCI.Points1 = polygonPCI.Points2;
polygonPCI.Progress = 0.0;
polygonPCI.Points2 = getNewEndPoints();
myStoryBoard.Begin();
}
回想起來,我將名稱從Points1和Points2更改爲StartPoints和EndPoints resp。 希望這有助於。 :)
哇,這很快。喜歡這個網站。 :) 感謝您的快速回復。 該代碼很容易適應多邊形而不是折線 - 並且或多或少地完全符合我的要求。 – Cornelius 2009-08-18 14:44:09
那麼upvote怎麼樣,呵呵呵? :) – 2009-08-18 14:55:39
...你去^。^再次感謝 – Cornelius 2009-08-19 12:25:06