Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 344
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

TextBlock animiert ein- und ausblenden


Autor: DotNetMastermind
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 3770
  
Kick it on dotnet-kicks.de  

Beschreibung:

Nachdem ich gestern bei einem Film die Einblendungen der „credits“ im Vorspann sah, dachte ich mir : „Das geht doch bestimmt auch ganz einfach mit WPF“.

Habe mich dann auch dran gesetzt und eine kleine Extension-Methode geschrieben, mit welcher man jeden beliebigen TextBlock um eine „credits“-ähnliche Animation erweitern kann. Die Extension-Methode sieht folgendermaßen aus :

public static void AddSmartFadingAnimation( this TextBlock TextBlockToAnimate,
List FadingTextList,
double TextPromptDuration,
double FadingSpeed )

Die Verwendung der Methode ist recht einfach. Man legt einfach ein TextBlock-Control in seiner GUI an, bestimmt alle Eigenschaften (wie der TextBlock auszusehen hat), erstellt ein String-Array (List), füllt dieses mit den entsprechenden Texten (.add(„Text“)) und wendet die Methode AddSmartFadingAnimation(...) auf dem TextBlock-Objekt an. Eine beispielhafte Verwendung der Methode sieht folgendermaßen aus :

List TextList = new List();
for( int i = 0; i < 10; i++ )
TextList.Add( "Einzublendender Text Nr. " + i );

tblFadingInfo.AddSmartFadingAnimation( TextList, 1000, 1500 );

(tblFadingInfo ist hierbei der Name eines TextBlock-Objektes)


Weiterführende Informationen (Screenshots und Beispielapplikation zum Download) erhaltet ihr in meinem Blog unter : http://dotnet-forum.de/blogs/thearchitect/


Abgelegt unter: WPF, GUI, Design, Animation, TextBlock, animierter Text.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
	public static class SmartTextAnimation
	{
		/// <summary>
		/// Add a fading animation to a 'TextBlock'-Control
		/// </summary>
		/// 
		/// <param name="FadingTextList">The generic List of all strings that have to be shown</param>
		/// <param name="TextPromptDuration">The duration of the text prompt in milliseconds</param>
		/// <param name="FadingSpeed">The speed of the text fading animation in milliseconds</param>
		/// 
		/// <returns></returns>
		/// 
		public static void AddSmartFadingAnimation( this TextBlock TextBoxToAnimate, List<string> FadingTextList,
																							  double TextPromptDuration, double FadingSpeed )
		{
			int index = 0;
			DoubleAnimation FadeOutAnimation = new DoubleAnimation()
			{
				Duration = new Duration( TimeSpan.FromMilliseconds( FadingSpeed ) ),
				To = 0, BeginTime = TimeSpan.FromMilliseconds( TextPromptDuration )
			};
			DoubleAnimation FadeInAnimation = new DoubleAnimation()
			{
				Duration = new Duration( TimeSpan.FromMilliseconds( FadingSpeed ) ),
				To = 1, BeginTime = TimeSpan.FromMilliseconds( TextPromptDuration + FadingSpeed )
			};

			Storyboard FadeInAndOutStoryboard = new Storyboard() { RepeatBehavior = RepeatBehavior.Forever };
			Storyboard.SetTargetProperty( FadeOutAnimation, new PropertyPath( "(Opacity)" ) );
			Storyboard.SetTargetProperty( FadeInAnimation, new PropertyPath( "(Opacity)" ) );
			Storyboard.SetTarget( FadeOutAnimation, TextBoxToAnimate );
			Storyboard.SetTarget( FadeInAnimation, TextBoxToAnimate );

			FadeInAndOutStoryboard.Children.Add( FadeOutAnimation );
			FadeInAndOutStoryboard.Children.Add( FadeInAnimation );

			TextBoxToAnimate.Text = FadingTextList[index++];

			FadeOutAnimation.CurrentStateInvalidated += new EventHandler( (sender, eArgs) =>
			{
				if ( (sender as Clock).CurrentState == ClockState.Filling )
				{
					TextBoxToAnimate.Text = FadingTextList[index];
					if (++index == FadingTextList.Count) index = 0;
				}
			} );

			FadeInAndOutStoryboard.Begin();
		}
	}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Daten aus einer Datenbank in WPF darstellen
[C#] WPF-Steuerelemente in Windows Forms-Anwendung nutzen
[C#] Transparente WPF-Anwendung
[C#] Rechtschreibhilfe in .NET WPF Anwendung integrieren
[C#] Alle verfügbaren Farben mittels WPF ausgeben
[C#] WPF: Image aus dem Web in Image-Element anzeigen
[C#] Handle eines WPF Fensters ermitteln
[VB.NET] Theme für WPF-Anwendungen anwenden
[C#] WPF Fenster mit Aero Glass
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden
[C#] RoutedEvent erstellen
[C#] Automatische Anpassung der Breite von GridViewColumns
[C#] TaskDialog anzeigen
[C#] User-Management für WPF Smart Client Anwendung
[C#] WPF Formulare dynamisch laden
[C#] old Windows Forms Image to new WPF Image
[C#] FolderBrowseDialog in WPF
[C#] WPF Shortcut
[C#] Drag-and-Drop-Binding in .NET 4
[C#] Spalten des WPF-DataGrid in .NET 4 anpassen
[C#] WPF-Anwendung mit .NET 4 entwickeln
[C#] WPF Tutorial: Auf Datenbankinhalte mit WCF zugreifen
[C#] WPF: Mit Validation Rules Eingaben validieren
[C#] WPF: Rechtschreibhilfe in Anwendung integrieren
[C#] WPF-Splash-Fenster
[VB.NET] Ist Silverlight im Design Modus oder in der IDE (WPF)
[C#] Ribbon-Oberfläche in WPF implementieren
[C#] Hochwertige (optisch ansprechende) WPF - Buttons
[C#] WPF - Buttons "OK/Cancel" - endlich unverwechselbar -
[C#] Visuelles Feedback fokussierter Text Boxen
[C#] InputBox WPF C#
[C#] Threadsichere GUI Änderungen
[C#] Events aus Worker-Thread im GUI-Thread werfen! Kein Invoke!
[C#] Maus Sanduhr zeigen wenn Methode ausgeführt wird
[C#] Design-Mode
[ASP.net] Design zur Laufzeit wechseln

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.