我正在为我的应用创建一个(可能是3D)滚动信用屏幕,这类似于您在电影结尾时可能看到的,但应该能够包含图形,动画等。
这样做的最佳方法是什么?我想我可以创建一个非常高的UserControl,其中包含要滚动的整个内容,然后只是在ScrollViewer中制作动画,或者甚至只是一个Canvas并为该位置设置动画,但是做这样的事情有明显的性能问题我恐怕太慢了。
如果积分可以在3D表面滚动,有点像星球大战,或者有鱼眼效果,那将会很酷,但我知道在WPF中蹲下3D。
我确实想要某种褪色/ alpha混合,所以积分似乎在底部淡入和/或在顶部淡出,但我也坚持如何做到这一点。*
**实际上,为此我想我可以叠加一些半透明渐变,只要背景是纯色。*
答案 0 :(得分:10)
好吧,因为似乎没有人有任何评论,我继续做了我描述的事情,并且必须说结果非常好。我使用垂直LinearGradientBrush进行淡入淡出,并简单地为Canvas中的UserControl动画以进行滚动(动画Canvas.Top从< Canvas的ActualHeight>到(负)< ActualHeight of UserControl>)。看起来很不错。 :)
这是动画(注意我必须在代码中将DoubleAnimation.To设置为scroller.ActualHeight):
<DoubleAnimation
x:Name="scrollAnim"
BeginTime="0:0:30"
Duration="0:0:30"
From="200"
Storyboard.TargetName="scroller"
Storyboard.TargetProperty="(Canvas.Top)" />
这是scroller
元素:
<Canvas
ClipToBounds="True"
x:Name="scrollerCanvas">
<Credits:ScrollingCredits
x:Name="scroller"
Canvas.Top="200"
Width="{Binding ElementName=this, Path=ActualWidth}" />
</Canvas>
(还有一些其他的事情,因此滚动从0:0:30开始。)
这是推子:
<Border
x:Name="border"
Opacity="0">
<Border.Background>
<LinearGradientBrush
StartPoint="0,0"
EndPoint="0,1">
<GradientStop
Offset="0"
Color="Black" />
<GradientStop
Offset="0.2"
Color="#00000000" />
<GradientStop
Offset="0.8"
Color="#00000000" />
<GradientStop
Offset="1"
Color="Black" />
</LinearGradientBrush>
</Border.Background>
</Border>
答案 1 :(得分:2)
您可以使用VisualBrush在3D表面上“绘制”信用用户控件。