Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG schnell zeichnen (https://www.delphipraxis.net/61471-png-schnell-zeichnen.html)

crypti 21. Jan 2006 20:38


PNG schnell zeichnen
 
hi

ich habe mal wieder ein Problem und ich hoffe ihr könnt mir da weiterhelfen.

Welche Möglichkeiten kennt ihr um PNGs (auch transparent) in eigenen Anwendungen zu verwenden? Bisher nutze ich das GDI+ Zeugs von www.progdigy.com jedoch jedoch ist das doch recht performancefressend. Oder habe ich da noch die Möglichkeit die Qualität etwas zu reduzieren und somit die Geschwindigkeit zu erhöhen?

Oder gibt es noch andere nutzbare Schnittstellen?

danke euch

crypti

3_of_8 21. Jan 2006 20:40

Re: PNG schnell zeichnen
 
Wie wärs mit OpenGL oder DirectX?

crypti 21. Jan 2006 20:49

Re: PNG schnell zeichnen
 
Kannst du mir eventuell sagen wie ich das darüber mache?

mkinzler 21. Jan 2006 21:01

Re: PNG schnell zeichnen
 
Es gibt eine Komponente auf Sourceforge

3_of_8 21. Jan 2006 21:02

Re: PNG schnell zeichnen
 
Also auf http://delphigl.com findest du massig Tutorials zum Thema OpenGL mit Delphi, für DirectX empfiehlt sich in deinem Fall DelphiX oder UnDelphiX, dafür einfach mal im Forum suchen.

Khabarakh 21. Jan 2006 21:29

Re: PNG schnell zeichnen
 
Wieviele Sprites bewegst du denn auf einmal? Die Standard-GDI-Funktion ist MSDN-Library durchsuchenAlphaBlend, da brauchst du schon einige Sprites, um sie ins Schwitzen zu bringen.
Wenn du noch das letzte bischen Performance herauskitzeln willst, ohne eine der großen Engines verwenden zu wollen, kannst du dir mal die GR32-Lib anschauen. Selbst bei einer Auflösung von 1600 x 1100 und 100 Sprites, die jeden Frame neu geblendet werden müssen, bleibt die Framerate über 40 FPS.
http://graphics32.org/documentation/Images/rp_005b.png

crypti 23. Jan 2006 21:28

Re: PNG schnell zeichnen
 
hi

ich danke euch für eure Antworten. Durch ein paar Tests habe ich herausgefunden, dass wohl nicht das GDI+ Paket selbst, sondern die DoubleBuffered Funktion für mein "Performanceproblem" ist.

ICh habe in meiner Anwendung mehrere Objekte (transparent - von TGraphicControl) in welchem über das GDI+ Paket die transparenten PNGs gezeichnet werden. Je nach Benutzeraktion verändern sich diese Buttons (hover o.ä.).
Mache ich das DoubleBuffered des Formulars nicht an, dann geht der Bildwechsel extrem schnell, aber es kommt bei einigen großen Bildern zum berühmten Flackern.

Kann man diesem Flackern noch irgendwie anders entgegenwirken?

danke euch

crypti

crypti 3. Feb 2006 15:35

Re: PNG schnell zeichnen
 
Keiner eine Idee... ?

DGL-luke 3. Feb 2006 15:42

Re: PNG schnell zeichnen
 
wie wärs mit einem offscreenbitmap, in das du alle zeichenoperationen ausführst, und das dann im onpaint-Ereignis auf deine User-Schnittstelle malst?

SirThornberry 3. Feb 2006 16:13

Re: PNG schnell zeichnen
 
@DGL-luke: nix anderes macht Doublebuffered schon.

DGL-luke 3. Feb 2006 16:18

Re: PNG schnell zeichnen
 
ja... aber so viel ich weiss, macht die VCL da ein paar unnötige Sachen und es ist schneller das ganze selbst zu implementieren.

Wenn das natürlcih nicht das "VCL-doublebuffered" ist, ist eine eigene Lösung natürlich nicht notwendigerweise schneller.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz