AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX Cpu Entlastung ?
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX Cpu Entlastung ?

Ein Thema von ebber · begonnen am 2. Feb 2007 · letzter Beitrag vom 12. Feb 2007
Antwort Antwort
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#1

Re: DelphiX Cpu Entlastung ?

  Alt 6. Feb 2007, 18:12
Zitat von ebber:
Wie genau geht das über den normalen GDI ?
Bei GDI handelt es sich um die Windows-Schnittstelle, die für das Zeichnen zuständig ist. Dabei wird auf eine spezielle Fläche gezeichnet, die Dir vielleicht als Canvas bekannt ist. GDI ist dabei wiederum nur eine Schnittstelle, die von ganz unterschiedlichen Graphic Devices (GDI = Graphic Device Interface) implementiert werden kann. Typische Vertreter sind dabei Bitmaps ebenso wie Drucker. Beide stellen Dir eine Zeichenfläche zur Verfügung und Du kannst mit den gleichen Funktionen auf beide zeichnen (soweit das Device das Unterstützt).
In Delphi sind viele GDI Funktionen in der VCL gekapselt. Verwendest Du ein TBitmap-Objekt, so kannst Du hier über die Eigenschaft Canvas und dessen Methoden einfach auf einen fertigen Zeichencanvas zugreifen, ohne dass Du hier direkt das Win-API bemühen musst. An sich würde die Arbeit mit GDI dem Arbeiten mit TBitmap und TImage entsprechen. Wichtig ist dabei, dass Du Änderungen an einer Bitmap immer im Speicher durchführen solltest, niemals direkt die angezeigte Bitmap verändern!

Das hat einen einfachen Grund, jede Veränderung an einer angezeigten Bitmap führt zu einer sofortigen aktualisierung der Selben. Zeichnest Du 10 Linien, so wir die Bitmap auch 10 mal neu gezeichnet. Das zeichnen ist aber alles andere als flink. Hier finden jede Menge Dinge statt, es muss gewartet und synchronisiert werden, Bereiche geprüft (man darf ja nichts übermalen was eigentlich vor dem eigenen Zeichenbereich liegt), usw. Natürlich ist das neunmal völlig überflüssig, da sich hier ja gleich wieder etwas ändert.
Veränderst Du die Bitmap im Speicher, so werden nur die Daten verändert (die ja nirgends angezeigt werden). Das zeichnen einer ganzen Bitmap sollte dann auch recht flink gehen. Dazu kannst Du entweder die Bitmap dem Image zuweisen oder mit der Funktion BitBlt einfach den Inhalt des Canvas vom einem Bitmap auf den Canvas des anderen kopieren (auch eine sehr schnelle Funktion!)
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:34 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