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

时间:2009-01-17 03:08:57

标签: wpf animation 3d scroll credits

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

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

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

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

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

2 个答案:

答案 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表面上“绘制”信用用户控件。