HIlfe bei einem Marquee Label
-
Ich bin mal von c++ formms anwendungen auf C# umgesteigen und versuche jetzt ein marquee label hinzzukriegen,
Ich habe es bisher nur mit einem timer gemacht und diesem code:
label1.Text = label1.Text.Insert(0, " ");
somit wird alle 100 ms ein leerzeichen eingefügt. dabei wird es aber am ende der form nicht wieder auf die ursprüngliche position zurück gesetzt.
Und ich suche möglichst nache einer anderen lösung als die mit den leerzeichen.
MFG
Fabian
-
Besser wäre es, du zeichnest im Paint-Ereignis den Text selber (mittels e.Graphics.DrawString). Dann kannst du auch pixelgenau zeichnen.
Einfach im Timer eine Membervariable (z.b. 'pos_x' erhöhen) und dann Invalidate() aufrufen. Im Paint-Ereignis dann 'pos_x' als Parameter für DrawString angeben.Und für die Endposition kannst du dann ja pos_x wieder zurücksetzen:
if(pos_x >= ClientSize.Width) pos_x = 0;
Alternativ kannst du auch einfach die Location für das Label neu setzen:
Location = new Point(pos_x, Location.Y);
Dann brauchst du nicht selber zu zeichnen.
Beider Lösungen sind m.E. aber besser als die Leerzeichen-Variante.