Entwickler-Ecke

Sonstiges (Delphi) - Unterschied GDI+ und Canvas


Nano-Ware - Sa 01.10.11 17:53
Titel: Unterschied GDI+ und Canvas
Hey,

ich möchte einen Bildschirmschoner programmieren, der aber auch sehr performant sein muss. Deshalb interessiert mich der Unterschied zwischen GDI+ von Microsoft und den Canvas funktionen, die Delphi bereitstellt.
- Ist GDI+ auch so einfach?
- Ist Canvas überhaupt für schnelle Bewegungen geeignet? Es flackert nämlich doch manchmal sehr.
- Kann man mit GDI+ ohne riesen Aufwand alles realisieren, was mit Canvas geht?


Danke

//Ich suche einfach eine sehr performante Möglichkeit zu malen.


BenBE - Sa 01.10.11 19:09

Das Canvas flackert ist meist eher ein Problem des Programmierers, der den Code geschrieben hat.

Zudem bietet GDI+ zusätzlich zu den Funktionen vom Canvas nur Support für ein paar mehr Grafikformate und Support von Transparenzen. Auf Hardware läuft AFAIR beides, wenn dies der Treiber zulässt.

Wenn Du aber mehr als nur ein paar Linien zu zeichnen hast, taugt beides nicht. Hier bieten OpenGL und DirectX wesentlich bessere Möglichkeiten und vor allem wesentlich bessere Performance.


Nano-Ware - Sa 01.10.11 23:09

Okay die Frage bei OpenGL und DirectX ist nur, was der Anwender dann alles auf dem PC braucht.


BenBE - Sa 01.10.11 23:17

Bei OpenGL idR nix. Bei DirectX für ältere Windows die Runtime, bei aktuelleren Versionen aber auch nix. Nur nen Grafikkarten-Treiber braucht es bei beiden.

OT: Die Runtime von OpenGL ist kleiner.


Nano-Ware - Sa 01.10.11 23:19

Okay und was verstehst du unter älterem Windows?


jaenicke - So 02.10.11 02:47

Ich musste DirectX auch bei Windows 7 noch installieren, vorher ließ sich zumindest ein Programm nicht starten. Allerdings wird DirectX für sehr viele Programme gebraucht, unter anderem für Spiele, so dass es kein Problem sein sollte das vorauszusetzen.

GDI+ wird (oder wurde zumindest) zum Beispiel für die Ribbon Oberfläche von TMS [http://www.tmssoftware.com/site/advtoolbar.asp] benutzt. Das funktionierte (außer auf einem mehr als 10 Jahre alten Rechner) auch sehr gut. Es ist ab XP auch schon bei Windows dabei, vorher wird die gdi32.dll (oder so ähnlich) zusätzlich benötigt. Es wird Hardwarebeschleunigung benutzt (genau wie bei GDI bis XP, ab Vista ist GDI ohne Plus nicht mehr hardwarebeschleunigt und daher ziemlich langsam).

Für einen Bildschirmschoner würde ich aber auch DirectX oder OpenGL nehmen. Da bietet sich Delphi XE2 mit Firemonkey an, weil du da 3D Objekte usw. bereits vorgefertigt hast. Da ist der Aufwand relativ gering, je nachdem was du genau vorhast.