2009-01-17 19 views
9

Uygulamam için bir (muhtemelen 3D) kaydırma kredisi ekranı oluşturmak istiyorum. Bu, bir filmin sonunda görebileceğinize benzer, ancak grafikler, animasyonlar vb. Içerebilmeli.WPF ... fikirlerinde kredi ekranını kaydırmak?

Bunu yapmanın en iyi yolu nedir? Kaydırmak için tüm içeriği içeren ve daha sonra bir ScrollViewer'da veya bir Canvas'da ve hatta konumlandırılan bir animasyonda çok uzun bir UserControl oluşturabileceğimi düşünüyorum, ancak böyle bir şey yapmakla bariz performans sorunları var. Korkarım çok yavaş olur.

Eğer krediler bir 3D yüzeyde, Star Wars gibi ya da bir balık gözü efekti ile kayıyorsa iyi olur, ama WPF'de 3D ile ilgili bir squat biliyorum. kredi altta solmaya ve/veya üstündeki karartmak için görünür böylece

Ben solma/alfa-harmanlama çeşit istiyorum kesinlikle, ama ben de bunu nasıl takılıp ediyorum. *

** Aslında bunun için ben bu kadar uzun arka plan düz bir renk olduğu gibi bazı yarı şeffaf gradyan bindirmek sanırım. * kimse herhangi bir yorum var gibi görünüyor Eh beri

cevap

10

, devam ettim ve ben nasıl tarif şeyler yaptım ve sonuçların oldukça iyi olduğunu söylemeliyim. Ben solma yapmak için bir dikey LinearGradientBrush kullandım ve kaydırma için bir Canvas içinde bir UserControl animasyonlu (tuvali < ActualHeight from the Canvas> (negatif) < ActualHeight of UserControl>). Oldukça iyi görünüyor. :) İşte

animasyon var (ben scroller.ActualHeight için kodda DoubleAnimation.To ayarlamak zorunda unutmayın):

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

Ve burada scroller element:

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

(bazı yoktur diğer şeyler devam ediyor, dolayısıyla kaydırma neden 0: 0: 30'da başlıyor.)

İşte 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

ScrollingCredits neye benziyor? Kodun geri kalanı bu olmadan gerçekten anlam ifade etmiyor. –

+1

Oh, sadece büyük bir TextBlock içeren çok basit bir UserControl ... bu gerçekten herhangi bir şey olabilir. – devios1

2

Bir 3D yüzeyde kredi kullanıcı denetiminizi "boyamak" için bir VisualBrush kullanabilirsiniz.

İlgili konular