Hier ist mein Schlüsselcode:Wie man den Text des Etiketts von rechts nach links bewegt, wenn sich ein Charakter in der linken Spalte verbirgt, wird er rechts angezeigt?
using System;
using System.Windows.Forms;
namespace Scroller
{
public partial class Form1 : Form
{
int i, j;
bool k = false;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = "Time:"+ System.DateTime.Now.ToString();
i--;
j = i + this.Width;
if (i < this.Width && i > 0)
{
label1.Left = i;
}
else
if (i < 0 && k == false)
{
label1.Left = i;
k = true;
}
else
if (i < 0 && k == true)
{
label1.Left = j;
k = false;
}
if (i < 0 - label1.Width)
{
i = this.Width - label1.Width;
}
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Time:"+ System.DateTime.Now.ToString();
i = this.Width - label1.Width;
label1.Left = i;
}
}
}
Der Effekt, dass ich String bewegen rechts nach links ist die ganze Zeit machen wollen. Wenn ein Pixel des Texts auf der linken Seite verschwindet (weil es außerhalb des linken Rands des Formulars liegt), wird das Pixel auf der rechten Seite angezeigt.
Mit anderen Worten, kann der Effekt nicht das erste Zeichen der Zeichenfolge, indem löschen und es an den letzten anhängen.
Ich wusste, dass es einfacher sein wird, zwei Label zu verwenden, um es zu tun. Legen Sie den Standort des Benutzers im Formular fest und blenden Sie den anderen im Formular aus. Verschiebe sie in der gleichen Zeit.
Wenn das erste Etikett den linken Rand der Form getroffen, traf der zweite den rechten Rand des Formulars. Und der erste zieht aus, der zweite rollt ein. Bis der zweite sich vollständig bewegt, setze den x-Standort zurück.
Aber ich möchte nur ein Etikett verwenden. Also entschied ich mich, schnell den Standort des Labels zu wechseln und zu versuchen, das Auge des Benutzers zu "betrügen". Das Problem ist, wenn das Label zwischen links und rechts wechselt, es sehr offensichtlich blinkt. Obwohl ich das Intervall des Timers auf unter 20 eingestellt habe, besteht das Problem weiterhin.
Können Sie mir helfen, das Flash-Problem zu lösen oder mir andere Möglichkeiten aufklären, die nur ein Etikett und einen Timer verwenden können, um die Wirkung zu machen brauche ich?
Danke. Wenn ich mein Problem nicht klar genug beschrieben habe oder mehr Code benötige, lass es mich wissen.
lief ich Ihren Code. Und setzen Sie die Breite des Etiketts auf 319. Hier sind einige Probleme: 1. Wenn der Zeittext die rechte Seite trifft, wird es einige ms stecken. 2.Die minimale Bewegung des Textes ist Basis pro Raum und die Breite eines Raums entspricht mehreren Pixeln. Dadurch wird der Text nicht sehr flüssig. 3.Wenn die xx/xx: xx: xx auf der rechten Seite verschwinden, wird derselbe Inhalt nicht auf der linken Seite angezeigt. Gibt es eine bessere Lösung? Vielleicht funktioniert Padding statt Space besser? – Kevinwabbit