AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia GDI, GDI+ oder doch Direct2D?
Thema durchsuchen
Ansicht
Themen-Optionen

GDI, GDI+ oder doch Direct2D?

Ein Thema von Jazzman_Marburg · begonnen am 12. Mai 2011 · letzter Beitrag vom 6. Nov 2022
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#11

AW: GDI, GDI+ oder doch Direct2D?

  Alt 12. Mai 2011, 20:47
Gut, dann änder ich mal schnell meine Begründung: TImage ist zwar toll, aber es kann nicht mit GDI+ zusammen arbeiten. Dazu muss man zuerst das Bild in ein Delphi-kompatibles Format bringen und kann es erst dann anzeigen. Da GDI+ selber zeichnen kann, würde ich diese Zeichenroutinen bevorzugen.

Selbstverständlich kann TImage in Zusammenarbeit mit TPNGImage Transparenz darstellen!
Ist mir auch wieder eingefallen, dass das mit den PNG-Komponenten geht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#12

AW: GDI, GDI+ oder doch Direct2D?

  Alt 12. Mai 2011, 22:23
TImage ist zwar toll, aber es kann nicht mit GDI+ zusammen arbeiten.
Tut mir leid, wenn ich wieder herumnörgle - aber das geht sehr wohl (Voraussetzung: Image1 enthält ein PNG-Bild):
Delphi-Quellcode:
uses
  ..., GDIPAPI, GDIPObj, GDIPUTIL;

//...

procedure TForm1.Button1Click(Sender: TObject);
var
  Graphics : TGPGraphics;
  Brush: TGPSolidBrush;
begin
  Graphics:=TGPGraphics.Create(TPNGImage(Image1.Picture.Graphic).Canvas.Handle);
  try
    Brush:=TGPSolidBrush.Create(MakeColor(128,255,0,0)); //Alpha=128 entspricht 50%!!!
    try
      Graphics.FillRectangle(Brush,10,10,20,20);
    finally
      Brush.Free;
    end;
  finally
    Graphics.Free;
  end;
  Image1.Invalidate;
end;
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (12. Mai 2011 um 22:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#13

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Mai 2011, 08:08
[OT]
Grund: Der GraKa-Treiber und mein Ubuntu vertragen sich nicht.
Oh, was hast'n du für 'ne GraKa? Unter meinem läuft alles wunderbar, auch inner Virtualbox mit Windows drin.
[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#14

AW: GDI, GDI+ oder doch Direct2D?

  Alt 9. Jul 2012, 09:16
Hallo zusammen,


ich kram diesen Thread aus dem Mai noch einmal hervor, da hier noch Fragen unbeantwortet sind, welche mich aber derzeit ebenfalls beschäftigen und dieser Thread über die Suche einem entgegenspringt . Die Ursprüngliche Frage war ja: GDI, GDI+ oder Direct2D (per TDirect2DCanvas)?

Die Infos im Netz verwirren hauptsächlich, da jeder eine Meinung hat (schön), die aber meist das Gegenteil der anderen Meinung darstellt (das ist nicht so schön *g*). Nun die Frage: Kann mir jemand eine Aussage geben, welche Zeichen-Methode die optimale Lösung ist, um bei Windows 7 mit Hardwarebeschleunigung eine Oberfläche zu zeichnen? Unter "Oberfläche" verstehe ich:
  • PNG-Bilder einfügen (per Maus verschiebbar - ähnlich Windows-Desktop)
  • Text zeichnen
  • Linien zeichnen und diese möglichst schnell aktualisieren (für Statusanzeigen)
Ein Beispiel meiner aktuellen Implementierung mit GDI (ohne Plus) findet man im Anhang. Es handelt sich um die grafische Darstellung meines Lichtprogramms. Alle Elemente werden live gezeichnet.

  • GDI (ohne Plus) wird ja wohl bei Windows 7 nicht mehr per Hardware beschleunigt. Ich hab da aber auch unter XP aufgrund vieler PNG-Bilder meist nur mit 15 FPS gearbeitet, damit die CPU-Auslastung durch das Repainting nicht zu hoch wird (BitBlt).
  • GDI+ soll ja unter Windows7 wieder Hardwarebeschleunigt sein. (SynGDIPlus-OpenSource Methode, um TCanvas mit GDI+ zu zeichnen - ist das sinnvoll und performant?)
  • Mit TDirect2DCanvas hab ich noch keine Erfahrung.

Hier noch eine Quelle, wo auch (eher ergebnislos) zwischen Direct2DCanvas und GDI+ diskutiert wurde: Chris Bensen Blog: TDirect2DCanvas-Performance

Noch einmal: was wäre die optimale Zeichenmethode, um möglichst schnell mit oben angegebenen Voraussetzungen zu zeichnen?


vielen Dank,
Christian
Miniaturansicht angehängter Grafiken
pcdimmergui2.jpg  
Christian Nöding

Geändert von christian.noeding ( 9. Jul 2012 um 09:42 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: GDI, GDI+ oder doch Direct2D?

  Alt 9. Jul 2012, 09:49
Was spricht gegen eine kombination von GDI+ und OpenGL ?
Ich mach nichts anderes und läuft hervorragend.
Was die Hardware beschleunigung angeht.. na ja und das andere halt auch.

Transparentes OpenGL Fenster in verbindung mit Blur/Crytal Effekt und aufgesetzen *.PNG's mit GDI+ feine sache
wenn man drauf steht natürlich.


gruss
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#16

AW: GDI, GDI+ oder doch Direct2D?

  Alt 9. Jul 2012, 09:51
Warum nicht ganz einfach FMX nutzen wenn man schon XE2 hat, das ist doch OpenGL oder DirectX und schön schnell.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: GDI, GDI+ oder doch Direct2D?

  Alt 9. Jul 2012, 10:00
Warum nicht ganz einfach FMX nutzen wenn man schon XE2 hat, das ist doch OpenGL oder DirectX und schön schnell.
Ganz einfach:
Eine VCL-Anwendung komplett auf eine FMX-Anwendung umzugestalten ist aufwendig und die Zeit bezahlt einen keiner.
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#18

AW: GDI, GDI+ oder doch Direct2D?

  Alt 9. Jul 2012, 10:11
Hallo,

danke schon einmal für die Antworten. Firemonkey kann ich nicht einsetzen, da das Hauptprogramm ein herkömmliches VCL-Programm ist. Die Anzeige soll als Docking in die Hauptanwendung eingebaut werden. Soweit mir bekannt ist kann ich FMX-Fenster nur per DLL (oder mit sehr teuren Tools) in die VCL-Anwendung integrieren.

@EWeiss: wie sähe die Kombination von GDI+ und OpenGL aus? Google spuckt da zwar viel aus, aber wenn Du nen kleinen Tipp hast wäre das gut.

Kann einer eine Aussage zum Vergleich TDirect2DCanvas <-> GDI(+) machen? Wenn das TDirect2DCanvas flott genug für 25 FPS ist, wäre ich damit ja schon zufrieden Ich kanns auch selber ausprobieren, aber wenn da jemand schon Erfahrung hat, brauch ich nicht extra zig Zeilen Code schreiben, um dann festzustellen, dass die Lösung langsamer als die Alte ist.


besten Dank,
Chris
Christian Nöding
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#19

AW: GDI, GDI+ oder doch Direct2D?

  Alt 10. Jul 2012, 16:47
Zitat:
25 FPS
Wenn du 25fps brauchst, würde ich generell von einer CPU-basierten Lösung wie GDI+ abraten und gleich auf OpenGL /Direct2D gehen.
Vorteil liegt auf der Hand: Volle Leistung der GPU und kein CPU-Krüppelding
Kann zwar gut sein, dass GDI+ in vielen Fällen 25fps schafft, aber der Leistungs-Spielraum nach oben ist bei einer GPU-basierten Lösung um mehrere Faktoren höher.

OpenGL hätte dann sogar den Vorteil, solltest du deine Anwendung irgendwann mal auf mobile Geräte bringen wollen (ist ja zur Zeit nicht so abwegig), kannst du zumindest den OpenGL Code schon teilweise übernehmen, da OpenGL (ES) auf mobilen Geräten der Standard ist.

GDI+ ist etwas, auf das ich bei einer Neuentwicklung nicht mehr setzen wurde.


@EWeiss: wenn du schon OpenGL benutzt, für was brauchst du dann noch GDI+ ? Kann gut sein, dass es in manchen Fällen sinnvoll ist, allerdings fällt mir jetzt spontan nichts ein, worin GDI+ irgend einen Vorteil hätte gegenüber OpenGL, im Gegenteil.
Würd mich deswegen interessieren, warum du die beiden Techniken verbindest und für was?

Geändert von blackfin (10. Jul 2012 um 16:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#20

AW: GDI, GDI+ oder doch Direct2D?

  Alt 10. Jul 2012, 17:59
@blackfin

bei mir Transparenzen in Komponenten incl. Zoom/Scale/Rotate Antialiasing etc.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 16:11 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