Cześć wszystkim,
Opowiem może krótko mój problem:
W pracy potrzebny nam jest taki pasek informacyjny (NEWS TICKER). I zgłosiłem się, że może uda mi się napisać coś takiego.
(udało mi się znaleźć taki program TEXT TICKER 2.4, ale nie obsługuje polskich i ukraińskich znaków, a jest to potrzebne)
Program miałby wyglądać na takiej zasadzie, że z pliku bierze tekst -> wstawia w label -> i wszystko się przesuwa w lewo.
- do tego żeby co jakiś okres czasu sprawdzał czy nie zmienił się tekst w pliku. Tak to sobie wymyśliłem.
i udało mi się takie cudo stworzyć.
Problem polega na tym, że krótkie zdania działają płynnie, ale gdy już dochodzi do dłuższych zdań to program strasznie zwalnia tzn. o wiele wolniej się przesuwa pasek.
Nie wiem co jest tego powodem. Czy w złym miejscu otwieram pliki i timer tak spowalnia program ?
Program tworzyłem w Visual Studia 2015 w Windows Formsach.
liczę na pomoc i pozdrawiam :)
ps: próbowałem stworzyć wątek według : https://4programmers.net/Forum/Newbie/219994-prosby_o_sprawdzenie_kodu_
public Komunikacja()
{
InitializeComponent();
this.TopMost = true;
tmScroll.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
string path = "tekst.txt";
string readText = File.ReadAllText(path, Encoding.Default);
int length = readText.Length;
label1.Text = readText;
}
private void tmScroll_Tick(object sender, EventArgs e)
{
Label1:
int x = Int32.Parse(label1.Text.Length.ToString());
int dl = (1050-(90*x)-500); // nie umiałem wykminić jak zrobić, że gdy tekst minie ekran, to żeby się pojawił od początku
if (dl > 0) // policzyłem mniej więcej ile pikseli na literkę przypada plus. jakaś przerwa i działa tak na 2+
dl = -100; // więc jeśli ktoś zna lepszy sposób to z chęcią skorzystam, ale jest to mniej priorytetowe
if (label1.Location.X == dl)
{
label1.Location = new Point(1050, -17);
goto Label1;
}
else
label1.Location = new Point(label1.Location.X - 5, label1.Location.Y);
}
}
}