2013-09-23 40 views
1

我是WinRT和XAML的新手,對動畫的使用經驗更少。在研究了這個主題之後,我注意到當動畫被遍歷時,我可以更改故事板目標對象上的一些單獨屬性。我真的需要用每一幀來改變整個貝塞爾路徑點,以產生一個全新的具有隨機振幅和控制點的正弦波。每個幅度的高度將是隨機的以在給定時間點接近聲波,並且動畫是隨時間變化的聲音模式。我所看到的所有例子都是動畫,它們沿着貝塞爾路徑改變屬性,並在每一幀中遍歷路徑。我需要動畫更改每個幀的所有貝塞爾點。我可以在這裏使用故事板嗎?還是隻需要在某種計時器上繪製畫布?如何在XAML中的WinRT中創建貝塞爾路徑的動畫

回答

0

在XAML中沒有簡單的方法可以做到這一點,對於您的問題,Direct2D等即時模式渲染技術將是更好的選擇。我認爲XAML中的Path控件不具備實時波形渲染所需的性能特徵。

由於您似乎想用Storyboard對其進行設置,因此無論如何您似乎都會考慮預先設定的動畫,並且在這種情況下,您可能只需使用此類動畫的視頻錄製。

否則 - 您可以使用CompositionTarget.Rendering事件來使用代碼隱藏更新每個幀中的路徑。

+0

感謝您的回覆。波形轉換在隨機持續時間後重新創建隨機波形,以使外觀與旋律有關係,因此我無法使用視頻,因爲它是靜態的。它現在使用定時器和調度程序工作,但是當部署到表面RT時,降級會使其無法使用(它可以在我的筆記本電腦和Surface上正常工作)。屏幕上有四條貝塞爾路徑,它們在觸摸時啓動動畫,到Surface-RT觸及第四條時,它會慢慢爬行。 – DllyVar100

+0

我放棄了故事板路由,因爲沒有依賴屬性,我可以用它來創建動畫而不創建一個屬性,我不知道這樣做會讓我看到很大的改進。我假設會將一些處理移動到渲染線程。我相信它仍然會成爲一種依賴性動畫,看起來並不理想。它看起來像DirectX編碼要求我學習C++,這可能需要一點。對於CompositionTarget.Rendering,它看起來像佈局不能改變,但它看起來好像我可以寫入畫布,對嗎? – DllyVar100

+0

我又用了一個刺拳來使用故事板,並在我的用戶控件上創建了自己的屬性,名爲「Frame」,聲明爲雙重希望,我可以使用DoubleAnimation爲動畫製作5個左右框架動畫,以改變振幅以產生振動幻覺。似乎DoubleAnimation忽略我自己的屬性,但如果我嘗試usercontrols寬度它的工作。是否有一些特殊的方式需要聲明屬性而不是作爲依賴項屬性? – DllyVar100