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.[1][2]
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.
.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
- 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
- ↑ GDI+. In: msdn.microsoft.com. Microsoft, archiviert vom am 6. Mai 2008; abgerufen am 29. Juli 2025 (englisch).
- ↑ Platform SDK Redistributable: GDI+ RTM. In: microsoft.com. Microsoft, 19. September 2001, archiviert vom am 14. Oktober 2002; abgerufen am 29. Juli 2025 (englisch).
- ↑ The Three Parts of GDI+. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 29. Juli 2025 (englisch).
- ↑ Jason Price, Mike Gunderloy: Mastering Visual C# .NET. Wiley, 2006, ISBN 0-7821-5223-6, Understanding the Graphics Classes, S. 678 ff. (englisch, eingeschränkte Vorschau in der Google-Buchsuche – Erstausgabe: Sybex, 2002).
- ↑ Loyd Case: Graphics technology in 2000 and beyond. In: PC Magazine. Band 18, Nr. 21. Ziff Davis, Juli 1992, ISSN 0888-8507, S. 191–210 (englisch, eingeschränkte Vorschau in der Google-Buchsuche).
- ↑ The Structure of the Class-Based Interface. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 29. Juli 2025 (englisch).
- ↑ GDI+ Flat API. In: learn.microsoft.com. Microsoft, 18. August 2021, abgerufen am 30. Juli 2025 (englisch).
- ↑ New Features. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 1. August 2025 (englisch).
- ↑ Antialiasing with Lines and Curves. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 2. August 2025 (englisch).
- ↑ Antialiasing with Text. In: learn.microsoft.com. Microsoft, 7. Januar 2021, abgerufen am 2. August 2025 (englisch).
- ↑ About GDI+ Managed Code. In: learn.microsoft.com. Microsoft, 7. Mai 2025, abgerufen am 29. Juli 2025 (englisch).
- ↑ libgdiplus. In: mono-project.com. Abgerufen am 29. Juli 2025 (englisch).
- ↑ Holger Schwichtenberg, Christian Weyer: Keine Monokultur. In: Heise online. 10. Februar 2005. Abgerufen am 29. Juli 2025.
- ↑ System.Drawing.Common only supported on Windows. In: learn.microsoft.com. Microsoft, 21. Juli 2023, abgerufen am 29. Juli 2025 (englisch).
- ↑ Alex Polyakov, Vitaly Brusentsev: Graphics Programming with GDI+ and DirectX. A-List, Wayne 2005, ISBN 1-931769-39-7, Chapter 3.2: Metafiles, S. 68–78 (englisch, eingeschränkte Vorschau in der Google-Buchsuche).
- ↑ [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 (englisch).
- ↑ 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 (englisch).
- ↑ Critical vulnerability in MS Windows may escalate the virus threat. In: f-secure.com. 5. Oktober 2004, archiviert vom am 12. Oktober 2004; abgerufen am 28. Juli 2025 (englisch).
- ↑ Stuart McClure et al.: Hacking Exposed: Network Security Secrets & Solutions. 5. Auflage. McGraw-Hill, Emeryville 2005, ISBN 978-0-07-226081-6, GDI+ JPEG Processing Buffer Overflow (IE6 SP1), S. 592–594 (englisch, Volltext [PDF; 9,1 MB; abgerufen am 2. August 2025]).