AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GDI+ oder graphics32

Offene Frage von "delphiRenorm"
Ein Thema von delphiRenorm · begonnen am 8. Sep 2010 · letzter Beitrag vom 10. Sep 2010
Antwort Antwort
blackfin
(Gast)

n/a Beiträge
 
#1

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 00:32
GDI+ und Graphics32 sind erstmal nicht das gleiche an sich, das ist ein wenig ein Apfel / Birnen-Vergleich
GDI+ ist eine von Windows bereitgestelle API zum Zeichnen, Graphics32 ist eine Sammlung von Funktionen, die einem das Leben in der normalen GDI-Welt (ohne +) etwas leichter machen.

Das heisst aber auch, dass sich die beiden nicht gegenseitig ausschliessen.
Du kannst die Graphics32 installieren und diese verwenden und damit sogar mit GDI+-Techniken etwas zeichnen lassen oder Graphics32 sogar teilweise auf GDI+ erweitern.

Die Frage "was nehme ich lieber" kann man so pauschal nicht beantworten.
Es gibt Dinge, die lassen sich wahrscheinlich leichter mit Graphics32 realisieren, andere wiederum leichter oder schneller mit nativen GDI+ Techniken.
Dazu müsste man genau wissen, was du genau "aufhübschen" willst und im Einzelfall eben entscheiden, was die beste Technik dafür ist.

Das Abraten von OpenGL / DirectX ist sicher richtig, wenn es darum geht, alte Anwendungen nur aufzuhübschen.
Sobald du eine der beiden genannten API's verwendest, kannst du den kompletten GUI-Code neu schreiben, da dort nichts mehr so funktioniert wie in der VCL und OpenGL / DirectX auch nicht damit mischbar ist. (Beispiel: Du kannst kein TLabel oder keine TCombobox mit OpenGL nutzen, sondern musst dir solche GUI-Elemente meist selbst neu schreiben).
Allerdings kannst du im Gegenzug mit OpenGL / DirectX wesentlich mehr machen als mit GDI+, nämlich grafisch so ziemlich alles, was deinem Kopf so einfällt Eine alte Anwendung damit aufzuhübschen würde aber wirklich nur dann Sinn machen, wenn von vornherein wirklich jeglicher GUI-Code von der Programm-Logik getrennt ist. (Ich weiss, das versteht sich ja natürlich bei einem guten Programm-Konzept von selbst, nicht wahr? )
Tatsache ist aber nach meiner Erfahrung, dass die wenigsten Delphi-Anwenungen so geschrieben wurden
Sollte das aber bei dir der Fall sein, kannst du wirklich überlegen, ein komplettes GUI-Rework zu schreiben und OpenGL / DirectX verwenden.
Allerdings wird das erst einmal eine sehr sehr lange Einarbeitungszeit in diese API's voraussetzen, wenn du noch nie damit gearbeitet hast, da das Arbeiten damit alles andere als trivial ist.

Geändert von blackfin ( 9. Sep 2010 um 00:39 Uhr)
  Mit Zitat antworten Zitat
delphiRenorm

Registriert seit: 30. Mär 2010
18 Beiträge
 
Delphi 2010 Professional
 
#2

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 09:23
Hi, Danke für die Antwort.
Ich werde einige Anwendungen von Grund auf neu überarbeiten, d.h. in dem Fall wäre das komplette Neu-erstellen der Komponenten sicher nicht das Problem, nur wie du auch schon gesagt hast, heißt das, sich auch noch zumindest in eins der beiden (DirectX, OpenGL) einarbeiten muss. Ich glaub das werde ich mal nach hinten schieben.

Lässt sich in GDI+ analog verfahren wie vorher üblich. D.h. beispielsweise das füllen einer beliebigen Region mit einem Muster:
Delphi-Quellcode:
...
BitmapHandle := LoadBitmap(Hinstance, '...');
Brush1:= CreatePatternBrush(BitmapHandle);

RegN:= CreateRoundRectRgn(10,10, form1.clientwidth-10,form1.clientheight-10,10,10);
FillRGN(Form1.Canvas.Handle,RegN,Brush1);

DeleteObject(RegN);
DeleteObject(Brush1);
DeleteObject(BitmapHandle);
...
nur das ich den Brush abändere in TGPBrush (oder wie die da heißen) so dass ich auch transparent-effecte und antialiasing beim Füllen nutzen kann. Ansonsten würd ich mich vllt nur in graphics32 einlesen, wobei ich da auch wieder tausend Fragen hätte. Da beide sich nicht ausschließen, wäre es für mich nun interessant ob ich die Techniken der alten WIN32 graphic API einfach übertragen kann auf das GDI+ konzept (bsp überall nen GP vor oder so) und an manchen stellen vllt auf schnellere Funktionen der graphics32-lib zurückgreifen soll, oder ob ich für GDI+ wieder ne Menge Zeit investieren muss.

Ah, vllt mein Vorhaben mal etwas präziser ausgedrückt:
Komponenten erstellen, die letztlich sehr flexible in ihrer graphischen Darstellung sind. D.h. die Komponenten vergleichbar mit Button/ Panels, Labels,... sollen von einer Control abgeleitet werden, die es ermöglicht beliebige Regionen (Sterne,RoundRect,...) mit beliebigen Mustern zu füllen (Bilder, Verläufe,...) und dabei die hässlichen Kanten glätten und Teil-Transparenz-Effekte erlauben, eventuell müsst ich nur noch ne Funktion für Spiegelungseffekte auf dem Hintergrund erstellen. Hab ich diese Komponente, kann ich mir kompliziertere Objekte daraus ableiten, die dann Button simulieren, oder als Items einer speziellen Listbox auftreten, etc. Letztlich wäre ich sehr flexibel (lässt man mal 3D-Effekte außen vor) in der Gestaltung von meinen Komponenten und ich müsste die alten Buttons nur durch meine neuen abgleiteten Komp. ersetzen.

Geändert von mkinzler ( 9. Sep 2010 um 10:19 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#3

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 10:17
Hmm....meiner Meinung nach würde sich für deine Zwecke da eher GDI+ anbieten.
Die Erweiterungen von GDI+ gegenüber GDI sind ja gerade ARGB-Farbschema, native Unterstüzung von PNGs und erweiterte Vektor-Funktionen (für deine Freiformen).

Allerdings wird es nicht mit einem einfachen Prefix vor deinen vorhandenen Funktionen getan sein, da GDI+ in vielen Fällen etwas anders arbeitet als die GDI (ist noch mehr objektorientierter).

Zu beachten wäre allerdings, dass GDI+ unter Windows XP etwas langsamer ist als das alte GDI, ab Vista ist es aber umgekehrt, da nur noch GDI+ hardwarebeschleunigt ist.

Solltest du aber wirklich deine komplette GUI ohne jegliche VCL haben und die gesamten Komponenten neu schreiben wollen, wäre vielleicht OpenGL / DirectX doch der bessere Weg. Das solltest du dir vorher gut überlegen.
Am Besten du machst zunächst einmal ein paar Testprojekte mit allen Methoden/API's (Graphics32, GDI+, OpenGL, DirectX) und schaust dann, welche sich für dein Arbeiten am Besten eignet.

Die Doku von Graphics32 findest du hier:
http://graphics32.org/documentation/Docs/_Body.htm

Für GDI+ ist zum Einstieg vielleicht folgendes ganz nützlich:
http://www.delphi-treff.de/tutorials...-1/einleitung/

OpenGL-Tutorials für den Einstieg findest du hier:
http://wiki.delphigl.com/index.php/T...iger-Tutorials
ebenso zu empfehlen sind die NeHe-Lessons:
http://nehe.gamedev.net/

Für DirectX muss ich nun passen, was hier aktuell eine gute Einstiegs-Seite ist, da ich mich eher zu den OpenGL-Jüngern zähle und bei DirectX nicht auf dem neuesten stand bin
  Mit Zitat antworten Zitat
delphiRenorm

Registriert seit: 30. Mär 2010
18 Beiträge
 
Delphi 2010 Professional
 
#4

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 10:36
Hi super, vielen Dank dir.
Ich werd mal die Seiten durchforsten und mich an die Arbeit machen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 15:04
Wenn du schon einen solchen Aufwand ernsthaft in Betracht ziehst, wäre evtl. ein Blick Richtung .NET Sprachen auch noch drin. WPF bietet erheblich mehr Gestaltungsfreiraum, und die Komponenten sind bereits da. Da wäre dann die Arbeit in der Anpassung der Programmlogik an die Sprache, was aber u.U. sogar weniger Arbeit wäre, als sich eine komplette Komponenten-Lib selbst neu zusammen zu hacken.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
AndreFM

Registriert seit: 26. Nov 2009
Ort: Sydney, Australia
15 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 22:28
Ich wuerde auch ein Blick auf VGScene from KSDEV (http://ksdev.com/) werfen um ein besses aussehen fuer ein Application zu schaffen. Frueher wuerde ich dieses Komponent nicht vorschlagen da viele Probeme hatte, aber jetzt ist schon nutzbar. Ich kann nur vorschlagen dies nicht zu benutzen im Fall das Du VIELE forms hast, da z.Z etwas muehsam ist Komponenten hier und her zu schieben, usw.
Graphic32 is auch super, kamm man vieles damit machen.
Wie blackfin geschrieben hat, es ist wirklich besser kleinere Testprojekte mit jede moegliche Methode zu erstellen.

Andre
André Felix Miertschink
  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 06:20 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 by Thomas Breitkreuz