GDI+ (Next-Generation Graphics Device Interface; ehemals GDI2k) 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.
Funktionsumfang Die Funktionen von GDI+ umfassen im Wesentlichen die folgenden drei Bereiche: 2D-VektorgrafikWie GDI stellt auch GDI+ diverse Funktionen zum Zeichnen von Grafikprimitiven bereit. Ursprünglich waren auch Funktionen für dreidimensionale Computergrafik angedacht. Bildverarbeitung Typografie
Neuerungen zu GDI Im Gegensatz zur prozeduralen Programmierschnittstelle GDI ist GDI+ objektorientiert. Die prozedurale Programmierung ist dennoch über die GDI+ Flat API möglich, von deren Nutzung seitens Microsoft abgeraten wird.
Neben dem fundamentalen Wechsel des Programmierparadigmas, bietet GDI+ folgende Neuerungen: 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 () gezeichnet werden. Pfade werde als Objekte gespeichert. Funktionsaufrufe in GDI werden immer direkt auf dem Gerätekontext (, 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. Für die Textausgabe wird Antialiasing auf Basis von Microsoft ClearType angeboten. 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+. Das plattformunabhängige Mono-Framework greift in dessen Pendant libgdiplus intern auf die ebenfalls plattformunabhängige Grafikbibliothek Cairo zurück. .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.
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.
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. Unter anderem war auch der Internet Explorer betroffen.
Weblinks
Microsoft Developer Network (MSDN): GDI+ (englisch) IGDI+ – Delphi Open Source GDI+ library (englisch)
Literatur
Einzelnachweise
Kategorie:Windows-Programmierschnittstelle Kategorie:Grafikbibliothek