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
Seite 1 von 2  1 2      
delphiRenorm

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

GDI+ oder graphics32

  Alt 8. Sep 2010, 22:27
Hallo zusammen,

ich bin dabei meine Anwendungen graphisch etwas aufzumöbeln.
Dabei reichen die alten Graphic API-Funktionen nicht aus und
ich komm nicht drum herum eins von den neueren Packages zu
verwenden. Mein Ziel ist es allgemeine Regions mit Bitmaps
oder Verläufen zu füllen, Glaseffects und Teiltransparenz
zu integrieren. Dabei sollten die Kanten halt auch deutlich
glatter verlaufen, als das im alten Design der Fall ist.
Von Delphi OpenGL wurd mir abgeraten, weil das wohl mit Kanonen
auf Spatzen geschossen wäre. Hat jemand von euch Erfahrungen
mit den beiden Libaries und eine Ahnung was für meinen Fall
besser geeignet wäre?
Vielen Dank schon ma
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

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
 
#3

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
 
#4

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
 
#5

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.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

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
 
#7

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
delphiRenorm

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

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 22:30
Okay, hilfe. also,

OPENGL
ich hab die tutorials in opengl durchpflügt und kann jetzt lauter bunte basis-formen im raum verteilt zeichnen. Texturen würd ich sicher auch noch hinkriegen. was mir noch nicht so klar ist, ob RoundRect oder beliebige andere Formen /Regionen damit einfach zu erstellen sind und ob eine Initialisierung von OpenGL in der Anwendung (bsp. in meiner MainForm) genügt und ich dann dies zum zeichnen in allen anderen Kompos benutzen kann.

GDI+
Krieg ich nicht zum laufen. Habe sowohl die Version von progdigy.com als auch ne andere und beide werfen Fehlermeldungen aus. Liegt wahrscheinlich daran, dass die nicht Delphi2010 kompatibel sind. Bei progdigy's version haperts beim Erstellen eines Path. Da hab ich noch eine Funktion neu geladen, aber dann kam die nächste Fehlermeldung bei TNative... .

GRAPHICS32
Da bin ich mir nicht so sicher, was das kann und die Art der Dokumentation ist nicht so meins. Aber zur Not werd ich mich da wohl einarbeiten. Ich hätte halt gern was in der Hand was ich durchlese und dann die Basics kann und wild drauflos programmiere.

DIRECTX
... (noch nicht probiert)

.NET
Hm, da bin ich schon ein paar mal drauf gestossen als ich mich mit ADO beschäftigt hab. Hab grad mal den Artikel zu WPF bei Wiki gelesen und das scheint auch sehr interessant zu sein. Gibt es da was herausragend empfehlendes zur Einführung? Die Komponenten sehen ja schon sehr ansprechend aus. Wie flexibel ist man denn da?

Sorry dass ich so breit und querfeldein frage, nur sieht das für mich alles nach ner Menge Arbeit aus, die ich auch gern investiere nur kann ich das nicht in 4-5 verschiedenen Richtungen gleichzeitig. Vllt. wär die .Net variante ja was, für Anregungen bin ich weiterhin offen

Vielen Dank schonmal, ich glaube ihr erspart mir ein paar Tage Frust vorm PC
  Mit Zitat antworten Zitat
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#9

AW: GDI+ oder graphics32

  Alt 10. Sep 2010, 07:10
Hallo,

bezüglich GDI+ schau dir mal das hier an:

Delphi 2009 GDI+ Library

Das ist eine der besten Implementationen der GDI+ API, die mir bis dato in Delphi untergekommen ist. Ich nutze sie selbst in einigen Anwendungen.

Von der Website:

Zitat:
It differs from other Delphi GDI+ libraries in the following ways:

* It is modeled more after the .NET System.Drawing namespace instead of the C++ GDI+ classes. As a result, this library is a bit more high level and easier to use.
* It uses object interfaces for automatic memory management and ease of use. You don't have to keep track of your graphics objects anymore.
* It uses exceptions instead of error codes to handle errors the Delphi way.
* It comes with sample applications that demonstrate the usage of GDI+ through examples from the Windows Platform SDK.
* It supports the GDI+ version 1.1 extensions that were added with Windows Vista and certain Office versions.
* Optionally provides class helpers for interoperability with Delphi's TBitmap and TCanvas.
  Mit Zitat antworten Zitat
delphiRenorm

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

AW: GDI+ oder graphics32

  Alt 10. Sep 2010, 08:39
Das Problem kenn ich Nur funktioniert das ebenso nicht. Normale Arbeiten mit graphics ist kein Problem, nur sobald ich zu Pfaden übergehe klappt bspsw. Path.addellipse(...) nicht mehr. Beim Compilieren schimpft er, dass
Code:
[DCC Fehler] Unit1.pas(37): E2361 Auf private-Symbol TGPGraphicsPath.AddEllipse kann nicht zugegriffen werden
obwohl, dass ja als explizites Beispiel auf der HP schon angezeigt wird. Ich hatte eigentlich nicht vor wieder in der Unit rumzubasteln, es sollte ja so funktionieren, vllt hab ich auch irgend nen Denkfehler.

Noch ne Frage zu .NET und WFP. Müsste ich da Delphi Prism haben und wieviel Zeit (grob) bedarf die Einarbeitung? Ich hab mit .NET noch nicht gearbeitet aber es scheint für die Zukunft ja sehr interessant zu sein.
(hab die Frage mal nach: http://www.delphipraxis.net/154430-d...ml#post1048643 verschoben)

@AndreFM: Das sieht ganz nett aus, ist aber einerseits schweine teuer und ich würds auch gern selbst können. Es geht nicht nur darum, dass mein Programm später so und so aussieht. Trotzdem vielen Dank.

Geändert von delphiRenorm (10. Sep 2010 um 11:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:35 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