2009-01-17 6 views
9

Estoy buscando crear una pantalla de crédito desplazable (posiblemente 3D) para mi aplicación, que es similar a lo que podría ver al final de una película, pero debería poder incluir gráficos, animaciones, etc.Pantalla de créditos de desplazamiento en WPF ... ideas?

¿Cuál es la mejor manera de hacerlo? Estoy pensando que podría crear un UserControl muy alto que contenga todo el contenido para desplazarse y luego simplemente animarlo dentro de un ScrollViewer, o incluso solo un Canvas y animar la posición, pero hay obvios problemas de rendimiento al hacer algo así y Me temo que sería demasiado lento.

Sería fantástico si los créditos se desplazasen en una superficie 3D, algo así como Star Wars, o con un efecto ojo de pez, pero sé que es un poco plano sobre 3D en WPF.

que hago definitivamente quieren algún tipo de decoloración/alfa-mezcla por lo que los créditos parecen desvanecerse en la parte inferior y/o su desaparición gradual en la parte superior, pero también estoy atascado en cómo hacerlo. *

** en realidad, para que supongo que podría superponer algunos gradiente semitransparente, siempre que el fondo era de un color sólido. *

Respuesta

10

Bueno, ya que nadie parece tener algún comentario, me adelanté e hice cosas que he descrito cómo y debe decir que los resultados son bastante buenos. Usé un LinearGradientBrush vertical para hacer el desvanecimiento, y simplemente animé un UserControl dentro de un Canvas para el desplazamiento (animando Canvas.Top desde < ActualHeight of Canvas> a (negativo) < ActualHeight of UserControl>). Se ve bastante bien. :)

Aquí es la animación (tenga en cuenta que tenía que establecer DoubleAnimation.To en el código para scroller.ActualHeight):

<DoubleAnimation 
x:Name="scrollAnim" 
BeginTime="0:0:30" 
Duration="0:0:30" 
From="200" 
Storyboard.TargetName="scroller" 
Storyboard.TargetProperty="(Canvas.Top)" /> 

Y aquí está el elemento scroller:

<Canvas 
ClipToBounds="True" 
x:Name="scrollerCanvas"> 
<Credits:ScrollingCredits 
    x:Name="scroller" 
    Canvas.Top="200" 
    Width="{Binding ElementName=this, Path=ActualWidth}" /> 
</Canvas> 

(Existe cierta otras cosas están pasando, de ahí por qué el desplazamiento comienza en 0: 0: 30.)

Aquí está el fader:

<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> 
+0

¿Cómo se ve ScrollingCredits? El resto del código realmente no tiene sentido sin eso. –

+1

Oh, es solo un UserControl muy simple que consiste en un gran TextBlock ... realmente podría ser cualquier cosa. – devios1

2

Puede utilizar un VisualBrush para "pintar" su control de usuario de créditos en una superficie 3D.

Cuestiones relacionadas