Ik heb een tekst ticker gemaakt en deze werkt goed alleen zit ik met een gedachte die me niet helemaal lijkt te kloppen.
Ik heb een aparte load functie voor de tekst dus die zal je hier niet zien.
Verder heb ik een timer met interval 1, waar mij dus het probleem lijkt te zitten. 1 ms is denk ik iets te veel van het goede. Maar alleen wanneer ik deze op 1 zet is de snelheid een beetje acceptabel. Anders is hij veel te laat en duurt het veel te lang eer de tekst over het scherm is geweest.
Verder heb ik een override onpaint die de boel plaatst.
hoe krijg ik nu de tekst sneller laten scrollen zonder dat hij gaat haperen, dit gaat hij doen wanneer ik hem meerdere posities gelijk laat opschuiven.
Of klopt dit toch en kan hij makkelijk de interval van 1 aan.
ben benieuwd...
Ik heb een aparte load functie voor de tekst dus die zal je hier niet zien.
Verder heb ik een timer met interval 1, waar mij dus het probleem lijkt te zitten. 1 ms is denk ik iets te veel van het goede. Maar alleen wanneer ik deze op 1 zet is de snelheid een beetje acceptabel. Anders is hij veel te laat en duurt het veel te lang eer de tekst over het scherm is geweest.
Verder heb ik een override onpaint die de boel plaatst.
code:
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
51
52
53
54
55
56
57
58
59
60
| public TickerControl()
{
// override the paint
this.InitializeComponent();
this.Position = this.Size.Width;
this.Paint += new PaintEventHandler(overridePaint);
// set the timers
this.TimerTicker = new Timer();
this.TimerTicker.Tick += new System.EventHandler(this.TimerTickerTick);
this.TimerTicker.Interval = 1;
this.TimerTicker.Start();
// set the style
this.SetStyle(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer, true);
}
private void overridePaint(object sender, PaintEventArgs e)
{
// Get Graphics Object
Graphics g = e.Graphics;
// Set Font and Color and Brush Object
Font font = new Font(this.Font.Name, this.Font.Size);
SolidBrush brush = new SolidBrush(this.ForeColor);
// Draw the incoming string
g.DrawString(this.TextTicker, font, brush, this.Position, 6);
SizeF s = g.MeasureString(this.TextTicker, font);
this.TextLength = Convert.ToInt32(s.Width);
}
private void TimerTickerTick(object sender, EventArgs e)
{
// check position
if (this.Position == -25 - this.TextLength) this.TextTicker = "";
if (this.TextTicker.Length > 0)
{
this.Position--;
this.Invalidate();
}
else
{
// check to get content
if (!this.LoadTicker)
{
this.TextTicker = this.TextLoadTicker;
this.Position = this.Size.Width;
}
// load the content
else
{
this.LoadTickerFeed();
}
}
} |
hoe krijg ik nu de tekst sneller laten scrollen zonder dat hij gaat haperen, dit gaat hij doen wanneer ik hem meerdere posities gelijk laat opschuiven.
Of klopt dit toch en kan hij makkelijk de interval van 1 aan.
ben benieuwd...