Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Flickernder Newsticker - ich hab bald alle Techniken durch

  Alt 20. Mär 2006, 20:24
Hallo Leute.

Ich sitz hier jetzt schon etliche Wochen an so einer besch...eidenen Newstickerfunktion, und irgendwie will es mir nicht gelingen.

Aufgabe: einen String in Schriftgröße 72 vor rechts nach links durchscrollen lassen, nach möglichkeit Pixel für Pixel und die gleichmäßig, ohne Ruckeln, Flickern oder Sprünge. Der gesamte Zeichenbereich hat in etwa die Dimensionen von 1400 x 150 px. Es bleibt anzumerken dass der Newsticker nur ein Teilprogramm ist, und das restliche Programm auch ein bisschen Rechenleistung braucht.

Damit ihr nicht denken müsst, ich frag hier einfach uns lass Euch die Arbeit schaffen, meine Verzeifelten versuche bisher:

Begriffserklärung:
Sprüge: Newsticker bewegt sich normalerweise um 1 px weiter, weil aber gerade etwas gerechnet wurde überspring der Newsticker mehrere Pixel oder wird alternativ langsamer.
Flackern: Stellt Euch ein O oder eine Null vor, deren Oberseite nicht mehr an die Unterseite passt (versuche das mal zu illustrieren

aus:
###
#--#
###

wird:
###
-#--#
-###

Ruckeln: naja, wird bei "Sprünge" miterklärt (halt das Gegenteil davon), einfach ein unregelmäßiges Ablaufen)


1:
http://www.delphipraxis.net/internal...light=flickern
Paintbox hilft nicht, und GD32 ist ab einer gewissen Größe auch recht langsam.

2:
Bitmap mit Textout, BitBlt auf Backbuffer und dann BitBlt auf Form.Canvas, flackert auch

3:
DirectX bzw. DirectDraw jeweils getestet mit (http://turbo.gamedev.net/) DelphiX, UnDelphiX, DGLEngine, Asphyre

4:
Einbinden eines TWebbrowsers mit einer Flash (SWF) Animation, die einen Newsticker darstellt - flackert auch

5:
Testen einer Website, die mit DHTML und Javascript einen Text darstellt - flackert auch

6:
Siehe 2, allerdings am Anfang den ganzen Text auf ein großes Bitmap, und dass dann immer um ein px verschoben mit BitBlt anzeigen lassen - ruckelt (<-- immernoch die beste Lösung bisher)

Alle Methoden arbeiten mit Threads, da "Zeichen" wurde sowohl ohne, als auch mit Synchronize ausprobiert.

Das Hauptproblem, weshalb Punkt 6 wohl auch am vielversprechensten aussieht, ist wohl dass die Schriften (Vektorgraphik!) jedesmal beim Textout-Zeichnen auf ein Bitmap neu skaliert und berechnet werden müssen (?).

Hoffe das Problem selbst wird damit erstmal deutlich.

Damit Ihr ein "bisschen" Anreiz habt mitzurätseln, stetze ich hiermit EINEN KASTEN BIER als BELOHNUNG aus (oder etwas vergleichbares nach eigener Wahl), wer maßgeblich zur Lösung dieses Problemes beiträgt!

Vielen Dank schonmal im Vorraus, ich bin auf eure Antworten angewiesen.
  Mit Zitat antworten Zitat