2009-06-06 57 views
2

我無法弄清楚我在這裏丟失了什麼。WPF中的動畫轉換

問題出在這裏:
考慮一個帶有觸發器的(Control | Data)模板,它切換了一些內部UI元素的可見性。例如。當IsReadOnly == true時顯示一個TextBlock,並在IsReadOnly == false時顯示一個TextBox。

如果你沒有動畫就做到這一點,一切都很完美 - 一個或兩個製作者可以完成這項工作。但是如果你想要一個奇特的動畫呢?然後,您將指定在EnterActions和ExitActions中啓動哪些動畫。

但問題是動畫應該做什麼?修改寬度/高度看起來真的很難看,因爲WPF中的固定大小几乎總是一條錯誤的路,而且它絕對不靈活。

到目前爲止,我所提出的最好的方法是在一定程度上修改MaxHeight/MaxWidth,這只是給了更多的靈活性,但仍然看起來很殘酷。

如何讓WPF將元素的寬度/高度從0增加到「儘可能多」?

UPD:目前我做動畫不透明度和RenderTransform,它的工作原理。只是有時候我希望看到動畫元素在沒有轉換的情況下滑動。這不是一個關鍵問題,但對我來說這是一個非常有趣的問題。

回答

3

對於大多數動畫,您應該使用渲染變換或不透明或兩者。我幾乎從不使用其他任何東西。

爲了使您的文字「成長」,動畫渲染變換的比例。不要忘記中心點。

使用Expression Blend可以快速獲得所需的效果。

+0

是的,我也使用RenderTransform動畫,但有時我不想看到控件被「壓縮」和「解壓縮」的動畫... – arconaut 2009-06-07 11:06:08

0

我認爲最好的選擇是爲不透明度設置動畫效果:在TextBox淡入時使TextBlock淡出,反之亦然。

1

考慮使用Blend SDK的過渡效果。有關構建內部使用像素着色器的自定義TransitionControl的詳細說明,請參見here