10

映画の最後に表示されるものに似た、アプリ用の (おそらく 3D) スクロール クレジット画面を作成しようとしていますが、グラフィック、アニメーションなどを含めることができるはずです。

これを行う最善の方法は何ですか?スクロールするコンテンツ全体を含む非常に背の高い UserControl を作成し、それを ScrollViewer 内でアニメーション化するか、Canvas だけでアニメーション化して位置をアニメーション化できると考えていますが、そのようなことを行うと明らかにパフォーマンスの問題があり、私は遅すぎるのではないかと心配しています。

スター ウォーズのような 3D サーフェス上で、または魚眼効果を使用してクレジットをスクロールできれば素晴らしいと思いますが、WPF での 3D についてしゃがむことは知っています。

クレジットが下部でフェードインしたり、上部でフェードアウトしたりするように、ある種のフェード/アルファブレンディングが確実に必要ですが、それを行う方法にも行き詰まっています.*

**実際には、背景が単色である限り、半透明のグラデーションを重ねることができると思います.*

4

2 に答える 2

11

誰もコメントしていないように見えるので、私は先に進み、私が説明したように物事を行い、結果はかなり良いと言わざるを得ません. 垂直方向の LinearGradientBrush を使用してフェードを行い、スクロールのために Canvas 内の UserControl を単純にアニメーション化しました (Canvas.Top を <ActualHeight of Canvas> から (負の)<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>
于 2009-01-19T00:34:08.677 に答える
2

VisualBrushを使用して、クレジットユーザーコントロールを3Dサーフェスに「ペイント」できます。

于 2009-01-20T14:07:19.127 に答える