在WPF滚动学分屏幕...想法?

dev*_*os1 10 3d wpf animation scroll credits

我正在为我的应用程序创建一个(可能是3D)滚动信用屏幕,这类似于您在电影结束时可能看到的,但应该能够包括图形,动画等.

这样做的最佳方法是什么?我想我可以创建一个非常高的UserControl,其中包含要滚动的整个内容,然后在ScrollViewer中动画它,甚至只是一个Canvas并为该位置设置动画,但是做这样的事情有明显的性能问题我恐怕太慢了.

如果积分可以在3D表面滚动,有点像星球大战,或者有鱼眼效果,那将会很酷,但我知道在WPF中蹲下3D.

我确实想要某种褪色/ alpha混合,所以学分似乎在底部淡入和/或在顶部淡出,但我也坚持如何做到这一点.*

**实际上,为此我想我可以覆盖一些半透明渐变,只要背景是纯色.*

dev*_*os1 11

好吧,因为没有人似乎有任何评论,我继续前进并做了我描述的事情,并且必须说结果非常好.我使用垂直LinearGradientBrush进行淡入淡出,并简单地为Canvas中的UserControl动画以进行滚动(将Canvas.Top从Canvas的<ActualHeight>动画到(负)UserControl的<ActualHeight>).看起来很不错.:)

这是动画(注意我必须在代码中将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)" />
Run Code Online (Sandbox Code Playgroud)

这是scroller元素:

<Canvas
ClipToBounds="True"
x:Name="scrollerCanvas">
<Credits:ScrollingCredits
    x:Name="scroller"
    Canvas.Top="200"
    Width="{Binding ElementName=this, Path=ActualWidth}" />
</Canvas>
Run Code Online (Sandbox Code Playgroud)

(还有一些其他的东西在继续,因此滚动从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>
Run Code Online (Sandbox Code Playgroud)