Rubrik: Grafik und Font · Grafische Effekte | VB-Versionen: VB.NET | 19.03.08 |
XML Newsticker (.NET) Anzeige eines Lauftextes aus einer XML-Datei heraus. | ||
Autor: Heinz Prelle | Bewertung: | Views: 10.584 |
www.visual-basic5.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit nachfolgendem Code lässt sich ein einfacher Newsticker realisieren (Lauftext), wobei die Daten aus einer XML-Datei ausgelesen werden.
Aufbau der XML-Datei:
<?xml version="1.0" encoding="ISO-8859-1"?> <Test> <Text1>Dieser NewsTicker</Text1> <Text2>erwarte als Datenquelle eine XML Datei.</Text2> <Text3>Beispiel wurde heruntergeladen von:</Text3> <Text4>http://www.vbarchiv.net - Das große Visual Basic Archiv</Text4> </Test>
Imports System Imports System.Drawing Imports System.Windows.Forms Imports System.Xml Imports System.Text Imports System.IO Public Class Form1
''' <summary> ''' Hilfsklasse zur Ermittlung des Anwendungspfades. ''' </summary> Public Class Helpers Public Shared Function AppPath() As String Return My.Application.Info.DirectoryPath End Function End Class ' Benötigtes Grafik Objekt. Private hGraphics As Graphics ' Weite der auszugebenden Zeichenkette. Private [x] As Single = 0 ' y-Position der auszugebenden Zeichenkette. Private [y] As Single = 0 ' Auszugebende Zeichenkette Private msg As String ' Länge Zeichenkette Private Length As Single ' Grafik Objekt Private fnt As Font ' Timer-Objekt Private WithEvents Timer1 As New Timer
''' <summary> ''' Pfad zur benötigten .xml Datei initialisieren und die ''' Initialisierung des News - Tickers aufrufen. ''' </summary> Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Anwendung zentrieren. With Me .CenterToScreen() End With With Me hGraphics = .CreateGraphics() x = .Width y = 50 End With ' Pfad zur .xml Datei initialisieren. Dim xmlPath As String = Path.Combine(Helpers.AppPath, "test.xml") ' Aufruf der Prozedur zur Initialisierung des News - Tickers. Call InitAndLoadNews(xmlPath) End Sub
''' <summary> ''' Initialisierung des News - Tickers... ''' </summary> ''' <param name="Filename">XML-Dateiname</param> Private Sub InitAndLoadNews(ByVal Filename As String) Try ' Caption des Formulars setzten. Me.Text = "XML - News - Ticker..." ' XmlTextReader initialisieren. Dim xtr As New XmlTextReader(Filename) ' Daten aus .xml Datei in die Variable msg lesen. While xtr.Read() If xtr.NodeType = XmlNodeType.Text Then msg += " " & xtr.Value.ToString() End If End While ' Timer initialisieren und starten. With Me.Timer1 ' Geschwindigkeit des Zeitgebers. .Interval = 100 ' Zeitgeber starten. .Start() End With ' Deklarierten Font Objekt initialisieren. fnt = New Font("Times New Roman", 22, _ FontStyle.Bold Or FontStyle.Italic, GraphicsUnit.Pixel) ' Benötigte Ausgabeweite ermitteln. Dim sf As SizeF = hGraphics.MeasureString(msg, fnt) ' Ausgabeweite an die Variable "Length" übergeben. Length = sf.Width Catch ex As Exception ' Sollte hier ein Fehler auftreten wird dieser abgefangen ' und die Anwendung beendet. MessageBox.Show(ex.Message.ToString(), "Info") ' Anwendung beenden. Me.Close() End Try End Sub
''' <summary> ''' Grafikobjekt initialisieren und auf dem Ausgabeobjekt ausgeben. ''' </summary> Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick Try ' Hintergrund des Grafikobjektes an den Formhintergrund anpassen. hGraphics.Clear(Me.BackColor) ' Ausgabe des in der .xml Datei hinterlegten Strings. hGraphics.DrawString(msg, fnt, Brushes.Navy, [x], [y]) If [x] <= (0 - Length) Then [x] = Me.Width Else [x] -= 5 End If Catch End Try End Sub
''' <summary> ''' Beim MouseHover Ereignis wird der Lauftext angehalten. ''' </summary> Private Sub Form1_MouseHover(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.MouseHover ' Der Timer wird angehalten sobald die Maus in den Formbereich eintritt. Timer1.Stop() End Sub
''' <summary> ''' Verläßt die Maus die Form wird der angehaltene Lauftext wieder gestartet. ''' </summary> Private Sub Form1_MouseLeave(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.MouseLeave ' Verläßt die Maus den Formbereich wird der Timer gestartet. Timer1.Start() End Sub
''' <summary> ''' Verwendete Resourcen freigeben. ''' </summary> Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing ' Wurde das Grafik Objekt initialisiert wird es jetzt freigegeben. If Not hGraphics Is Nothing Then hGraphics.Dispose() End If End Sub
End Class