GDI+
GDI+ (GDI steht für Graphics Device Interface) ist der Nachfolger der Programmierschnittstelle GDI für zweidimensionale Computergrafik unter Microsoft Windows. Vergleichbare Grafikbibliotheken sind beispielsweise Quartz für Apples macOS und das plattformunabhängige Cairo-Framework.
Seit Windows XP bzw. Server 2003 ist die zentrale Programmbibliothek gdiplus.dll fester Bestandteil des Betriebssystems. Für Windows 98, Me, NT 4.0 (SP 6) und 2000 bestand die Möglichkeit, GDI+ nachträglich zu installieren.<ref>GDI+. In: msdn.microsoft.com. Microsoft, archiviert vom Vorlage:IconExternal am 6. Mai 2008; abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Platform SDK Redistributable: GDI+ RTM. In: microsoft.com. Microsoft, 19. September 2001, archiviert vom Vorlage:IconExternal am 14. Oktober 2002; abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Funktionsumfang
Die Funktionen von GDI+ umfassen im Wesentlichen die folgenden drei Bereiche:<ref>The Three Parts of GDI+. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref></ref>
- 2D-Vektorgrafik
Wie GDI stellt auch GDI+ diverse Funktionen zum Zeichnen von Grafikprimitiven bereit. Ursprünglich waren auch Funktionen für dreidimensionale Computergrafik angedacht.<ref></ref> - Bildverarbeitung
- Typografie
Neuerungen zu GDI
Im Gegensatz zur prozeduralen Programmierschnittstelle GDI ist GDI+ objektorientiert.<ref name="Paradigma">The Structure of the Class-Based Interface. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Die prozedurale Programmierung ist dennoch über die GDI+ Flat API möglich, von deren Nutzung seitens Microsoft abgeraten wird.<ref>GDI+ Flat API. In: learn.microsoft.com. Microsoft, 18. August 2021, abgerufen am 30. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Neben dem fundamentalen Wechsel des Programmierparadigmas, bietet GDI+ folgende Neuerungen:<ref>New Features. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 1. August 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- Es werden Farbverläufe für das Zeichnen von Linien und als Fülleffekt für geschlossene Formen unterstützt.
- Es können Polynomzüge ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) gezeichnet werden.
- Pfade werde als Objekte gespeichert. Funktionsaufrufe in GDI werden immer direkt auf dem Gerätekontext ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value), DC) ausgeführt. Der gezeichnete Pfad besitzt danach aber keine Referenz. In GDI+ bleibt das Objekt auch nach dem Zeichnen erhalten und kann wiederverwendet werden.
- Es werden Matrizen und Funktionen zur Koordinatentransformation angeboten.
- Skalierbare Regionen
- Zeichenoperationen unterstützen Alpha-Blending.
- Zeichenoperationen unterstützen nativ Antialiasing.<ref>Antialiasing with Lines and Curves. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 2. August 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Für die Textausgabe wird Antialiasing auf Basis von Microsoft ClearType angeboten.<ref>Antialiasing with Text. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 2. August 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- In der Bildverarbeitung werden mehr Grafikformate unterstützt: BMP, GIF, JPEG, EXIF, PNG, TIFF, ICO, WMF und EMF.
.NET
Die Grafikfunktionen des .Net-Frameworks nutzen intern GDI+.<ref>About GDI+ Managed Code. In: learn.microsoft.com. Microsoft, 7. Mai 2025, abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Das plattformunabhängige Mono-Framework greift in dessen Pendant libgdiplus intern auf die ebenfalls plattformunabhängige Grafikbibliothek Cairo zurück.<ref>libgdiplus. In: mono-project.com. Abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Holger Schwichtenberg, Christian Weyer: Keine Monokultur. In: Heise online. 10. Februar 2005.Vorlage:Abrufdatum</ref>
.NET nutzt in dessen Bibliothek System.Drawing.Common unter Windows GDI+ und für alle andere Plattformen die Bibliothek libgdiplus aus dem Mono-Framework. Seit der Version 6.0 empfiehlt Microsoft allerdings die Nutzung anderer Grafikbibliotheken, wie beispielsweise SkiaSharp (einem Wrapper für Skia), ImageSharp oder Aspose.Drawing. Das Einbinden der Bibliothek in Projekte, die nicht ausschließlich für Windows ausgelegt sind, erzeugt eine Compiler-Warnung. Zudem wird beim Aufruf einer Funktion aus der Bibliothek zur Laufzeit eine Ausnahme ausgelöst.<ref>System.Drawing.Common only supported on Windows. In: learn.microsoft.com. Microsoft, 21. Juli 2023, abgerufen am 29. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
EMF+
Das EMF-Format repräsentiert eine Kette von GDI-Zeichenoperationen zur Darstellung von Vektorgrafiken. Seit Windows XP existiert eine Erweiterung des Formats namens EMF+, die es erlaubt, auch die erweiterten Möglichkeiten von GDI+ zu nutzen.<ref></ref><ref>[MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions. (PDF; 10,5 MB) Protocol Revision 20.0. In: windows.net. Microsoft, 23. April 2024, abgerufen am 2. August 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Sicherheitslücke
Im September 2004 wurde eine Sicherheitslücke in der damaligen Version von GDI+ bekannt. Ein Pufferüberlauf ermöglichte das potentielle Ausführen von Schadprogrammen in JPEG-Bildern.<ref>Microsoft Security Bulletin MS04-028: Buffer Overrun in JPEG Processing (GDI+) Could Allow Code Execution (833987). In: learn.microsoft.com. Microsoft, 14. September 2004, abgerufen am 28. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Critical vulnerability in MS Windows may escalate the virus threat. In: f-secure.com. 5. Oktober 2004, archiviert vom Vorlage:IconExternal am 12. Oktober 2004; abgerufen am 28. Juli 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Unter anderem war auch der Internet Explorer betroffen.<ref></ref>
Weblinks
- Microsoft Developer Network (MSDN): GDI+ (englisch)
- IGDI+ – Delphi Open Source GDI+ library (englisch)
Literatur
Einzelnachweise
<references />