Top-Fragen
Zeitleiste
Chat
Kontext
GDI+
Microsoft Windows API Aus Wikipedia, der freien Enzyklopädie
Remove ads
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.[1][2]
Remove ads
Funktionsumfang
Die Funktionen von GDI+ umfassen im Wesentlichen die folgenden drei Bereiche:[3][4]
- 2D-Vektorgrafik
Wie GDI stellt auch GDI+ diverse Funktionen zum Zeichnen von Grafikprimitiven bereit. Ursprünglich waren auch Funktionen für dreidimensionale Computergrafik angedacht.[5] - Bildverarbeitung
- Typografie
Neuerungen zu GDI
Im Gegensatz zur prozeduralen Programmierschnittstelle GDI ist GDI+ objektorientiert.[6] Die prozedurale Programmierung ist dennoch über die GDI+ Flat API möglich, von deren Nutzung seitens Microsoft abgeraten wird.[7]
Neben dem fundamentalen Wechsel des Programmierparadigmas, bietet GDI+ folgende Neuerungen:[8]
- 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 (englisch Splines) gezeichnet werden.
- Pfade werde als Objekte gespeichert. Funktionsaufrufe in GDI werden immer direkt auf dem Gerätekontext (englisch Device Context, 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.[9] Für die Textausgabe wird Antialiasing auf Basis von Microsoft ClearType angeboten.[10]
- In der Bildverarbeitung werden mehr Grafikformate unterstützt: BMP, GIF, JPEG, EXIF, PNG, TIFF, ICO, WMF und EMF.
Remove ads
.NET
Die Grafikfunktionen des .Net-Frameworks nutzen intern GDI+.[11]
Das plattformunabhängige Mono-Framework greift in dessen Pendant libgdiplus
intern auf die ebenfalls plattformunabhängige Grafikbibliothek Cairo zurück.[12][13]
.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.[14]
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.[15][16]
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.[17][18] Unter anderem war auch der Internet Explorer betroffen.[19]
Weblinks
Wiktionary: GDI+ – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen
- Microsoft Developer Network (MSDN): GDI+ (englisch)
- IGDI+ – Delphi Open Source GDI+ library (englisch)
Literatur
- Mahesh Chand: Graphics Programming with GDI+. Addison-Wesley, 2004, ISBN 0-321-16077-0 (englisch).
- Nick Symmonds: GDI+ Programming in C# and VB .NET. Apress, 2002, ISBN 978-1-59059-035-5 (englisch).
- Eric White: GDI+ Programming: Creating Custom Controls Using C#. Wrox Press, Birmingham 2002, ISBN 1-86100-631-4 (englisch).
Einzelnachweise
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads