Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Double Buffered imitieren [gelöst] (https://www.delphipraxis.net/96391-double-buffered-imitieren-%5Bgeloest%5D.html)

halinchen 23. Jul 2007 18:18


Double Buffered imitieren [gelöst]
 
Hi!

Vorneweg, es geht um ein Spiel und möchte eigene Buttons möglichst schnell anzeigen lassen.

Ich mache mir mit der Graphics32-Library ein Offscreenbitmap. Es beinhaltet alle Buttons, Hintergründe und sonstige Spielereien. Dieses zeichne ich auf die Form. Wenn z.B durch Hovern das Bitmap geändert werden muss, zeichne ich es neu. Das geht recht schnell. Das eigentlich Problem ist das Zeichnen.

Mit DoubleBufferd: Es ist auf etwas älteren System recht träge.

Ohne DoubleBufferd: Auf allen System sehr schnell. Es flackert trotz Offscreenbitmap extrem.

Ich habe zeichen das Bitmap mittels DrawTo (ist eine TBitmap32-Methode) oder BitBlt. (Macht keinen Unterschied, DrawTo macht haargenau das selbe.)

Kann ich den DoubleBuffered Effekt selber nachbauen, so das ich es auf ein Gleichgewicht optimieren kann? Ich möchte nicht erst das Projekt mit OpenGL oder so machen.


P.S.: Was mir aufgefallen ist: Bei kleinen Bitmaps funktioniert das Offscreenbitmap. Aber bei meinem 640x480 großem flackerts immernoch.

edit: Och Mist. Jetzt hab ich den ganzen Tag rumprobiert und jetzt finde ich den Fehler selber:

Statt dem
Delphi-Quellcode:
Self.Invalide
das nutzen:
Delphi-Quellcode:
r := Self.ClientRect;
windows.InvalidateRect(Self.Handle, @r, FALSE);
(Danke an turboPASCALs GPU-Temp-Messer! :zwinker: )

turboPASCAL 23. Jul 2007 19:18

Re: Double Buffered imitieren [gelöst]
 
Bitte. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 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