有没有人知道如何动画一个面板使它看起来像在WPF中的旧式羊皮纸卷轴中滚动一样?任何帮助将不胜感激。
答案 0 :(得分:4)
问题在于,这是一个相当复杂的动画,需要将控制的一部分反转并压缩而控制的其余部分不是。所以这不能通过简单的缩放或拉伸动画来回答。您可以在指向用户控件的VisualBrushes上使用多个动画,但在运行时交换这些内容会变得很复杂。
我建议您查看CodePlex上的Transitionals项目:
Transitionals包含许多不同类型的动画,其中一个可能足够接近你。如果没有,您可以查看过渡的构建方式,看看是否可以调整过渡以满足您的需求。
最后,最有效的方法是使用着色器。然而,着色器需要一些数学,并且是用HLSL(而不是C#)编写的。如果您有兴趣了解更多信息,我强烈建议您查看以下文章:
答案 1 :(得分:0)
你寻找的效果真的很复杂。但是一个简单的替代方案就是为高度/宽度设置动画 在此示例中,我为stackpanel设置了动画,但您可以将其替换为任何控件。
<StackPanel Name="myStackPanel">
...
<StackPanel.Triggers>
<EventTrigger RoutedEvent="StackPanel.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="myStackPanel"
Storyboard.TargetProperty="Height"
To="100" Duration="0:0:1.0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
您可能需要添加动画为5的第二个触发器(例如,在MouseLeave上)。动画为0可能会阻止MouseEnter事件。