AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Flickernder Newsticker - ich hab bald alle Techniken durch
Thema durchsuchen
Ansicht
Themen-Optionen

Flickernder Newsticker - ich hab bald alle Techniken durch

Ein Thema von berens · begonnen am 20. Mär 2006 · letzter Beitrag vom 22. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#11

Re: Flickernder Newsticker - ich hab bald alle Techniken dur

  Alt 21. Mär 2006, 11:23
Zitat von berens:
Delphi-Quellcode:
var
  ende, x: Integer;
begin
  ende := GetTickCount + 30000;
  x := 800;

  while GetTickCount < ende do
  begin
    PaintBox321.Buffer.Clear (clWhite32);
    PaintBox321.Buffer.Font.Size := 72;
    PaintBox321.Buffer.Textout(x, 0, 'Funktioniert das denn auch mit etwas längeren Texten noch flüssig und wenn die Schriftgröße 150 beträgt?');
    PaintBox321.Flush;
    // sleep (0);
    Application.ProcessMessages;
    if x <= -50 then x := 800
    else dec (x, 2);
  end;
end;
So wird das sicher nichts. Da der Text statisch ist, solltest du ihn in einem eigenen Bitmap sichern und dieses dann versetzt auf den Paintboxbuffer zeichnen. Damit sollten >100 FPS kein Problem sein.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Flickernder Newsticker - ich hab bald alle Techniken dur

  Alt 21. Mär 2006, 11:27
Das ist zwar eine gute Idee (siehe mein Punkt 6), allerdings das du dann ein Problem, wenn du einen längeren Text bekommmst (sagen wir 10000 Zeichen, also widestring). Stell dir das mal als farbiges Bitmap vor mit 150px Höhe und ~10.000*50px = 500.000 px (!) Breite, das macht kein Arbeitsspeicher mit...

Irgendwer ein Beispiel für ScrollDC?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#13

Re: Flickernder Newsticker - ich hab bald alle Techniken dur

  Alt 21. Mär 2006, 11:39
War Punkt 6 schon immer da oben ? Bei langen Texten pufferst du einfach die doppelte (oder dreifache, ...) Bildbreite, das Neuberechnen verschiebst du optimalerweise in einen eigenen Thread.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Flickernder Newsticker - ich hab bald alle Techniken dur

  Alt 21. Mär 2006, 12:54
Hat noch keine mitr ScrollDC gearbeitet? Wie siehst mit ScrollWindow aus?

Edit: Mein aktuelle Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ende, x: Integer;
  ScrollRect, ClipRect, UpdateRect: TRect;
begin
  ende := GetTickCount + 30000;
  x := 0;

  while (GetTickCount < ende) and not cl do
  begin
    inc(x, 2);
// backbuffer.Clear(clWhite32);
// backbuffer.Font.Size := 72;
// backbuffer.Textout(0, 0, 'Funktioniert das denn auch mit etwas längeren Texten noch flüssig und wenn die Schriftgröße 150 beträgt?');
// BitBlt(PaintBox321.Canvas.Handle, 0, 0, width, 150, backbuffer.Canvas.Handle, 0, 0, SRCCOPY);
    ScrollRect := PaintBox321.BoundsRect;
    ClipRect := PaintBox321.BoundsRect;

    ScrollDC(PaintBox321.Canvas.Handle, -2, 0, ScrollRect, ClipRect, 0, @UpdateRect);
    InvalidateRect(PaintBox321.Canvas.Handle,@updaterect,True);
    BitBlt(PaintBox321.Canvas.Handle, width-10, 0, 2, PaintBox321.Height, backbuffer.Canvas.Handle, x, 0, SRCCOPY);
    // ReleaseDC(Handle, PaintBox321.Canvas.Handle);

// PaintBox321.Buffer.Clear (clWhite32);

// PaintBox321.Buffer.Font.Size := 72;
// PaintBox321.Buffer.Textout(x, 0, 'Funktioniert das denn auch mit etwas längeren Texten noch flüssig und wenn die Schriftgröße 150 beträgt?');
// PaintBox321.Flush;
    sleep (2);
    Application.ProcessMessages;
// if x <= -50 then x := 800
// else dec (x, 2);
  end;
end;
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Flickernder Newsticker - ich hab bald alle Techniken dur

  Alt 22. Mär 2006, 12:39
[quote="berens"]@jfheins: Das sieht generell schonmal ganz gut aus, (das obligatorische:) aaaber, mit steigender Schriftgröße (z.B. 150) und einem längeren Text (s.u.) wird der Ticker immer langsamer. Der text wird nicht langsamer es dauer nur länger bis ein Buchstabe durchgescrollt ist weil er breiter ist. Es scheint also nur so als ob es langsamer wäre.
Die Geschwindigkeit muss also von der Schriftgrösse abhängig sein.
Und das dann noch um "timebased movement" erweitern.

Dann braucht man nur noch einen timer/Thread der 25 mal pro Sekunde aufgerufen wird. (Für die menschliche Wahrnehmung genügen ungefähr 25 Bilder pro Sekunde, um eine "ruckelfreie" Illusion der Kontinuität zu erzeugen" Wikipedia)
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz