# Graphics Device Interface

La Graphics Device Interface (ou Graphical Device Interface) abrégé en GDI, soit Interface des dispositifs d’affichage en français, est l’un des trois composants de base du système d’exploitation Microsoft Windows.
GDI est une norme de Microsoft Windows pour la représentation d’objets graphiques ainsi que pour leur transmission aux périphériques de sortie, typiquement un écran ou une imprimante.

## GDI

La fonction de GDI est d’afficher des lignes, des courbes, d’obtenir le rendu des polices d’écriture, et la gestion des palettes. En revanche, il n’est pas chargé de l’affichage des fenêtres, des menus et autres, ce travail est réservé au gestionnaire de fenêtres. GDI est l’homologue de QuickDraw chez Apple, voir la liste de bibliothèques de tracé d'éléments 2D.
Les capacités les plus signifiantes de GDI parmi la plupart de ses méthodes d’accès direct au matériel sont probablement ses capacités vectorielles, ainsi que sa capacité d’abstraction du matériel de sortie. Utiliser GDI permet de dessiner sur de multiples périphériques (comme des écrans ou des imprimantes) très facilement, et d’en attendre une très bonne reproduction dans tous les cas. Cette capacité est au centre de toutes les applications WYSIWYG de Microsoft Windows.
Les jeux simples qui ne demandent pas de rendus graphiques comme Freecell ou le démineur utilisent GDI. Cependant, GDI ne sait pas produire correctement des animations (pas de notion de synchronisation avec le framebuffer) et ne supporte aucune fonctionnalité 3D, contrairement aux API DirectX et OpenGL, qui sont conçues pour exposer les fonctions matérielles 3D aux programmeurs.
Depuis Windows 95 et jusqu'à Windows XP, GDI est en partie accéléré matériellement ; il fait office d'intermédiaire entre l'application et le driver graphique. Sous Windows Vista le support matériel est abandonné et GDI est alors entièrement logiciel. Puis sous Windows 7, les applications s'exécutant sur le nouveau moteur de composition sont à nouveau accélérées matériellement, au plus proche du matériel (voir GDI Hardware Acceleration).

## Imprimantes GDI

Les imprimantes GDI (aussi connues sous le nom de Winprinters, s’apparentant aux Winmodems), et en particulier les imprimantes laser GDI, remplacent l'électronique traditionnelle de l’imprimante elle-même par du logiciel sur l’ordinateur hôte.
Elles fonctionnent en transformant l'image d'origine sur l'ordinateur hôte par un format bitmap envoyé à l'imprimante. Cette méthode a un avantage :
* prix à l'achat : elle évite d'inclure un CPU graphique et de la RAM sur l'imprimante. À relativiser par le fait que la plupart des imprimantes GDI ont des cartouches d'encres sur-facturées par rapport au prix réel (format propriétaire).
Les désavantages sont :
* augmentation de la charge de travail sur le PC hôte au moment de l'impression. Sur des machines récentes, cela ne pose pas de problème mais sur des plus anciennes (de 200 à 500 MHz) l'impression peut s'avérer très lente ;
* lenteurs, puisque même pour "quelques caractères", il faut parfois envoyer une page complète, l'imprimante n'effectuant aucune interprétation ;
* les imprimantes GDI n'incluent pas d'émulations dans leur firmware (ni la possibilité de les ajouter ultérieurement). Par conséquent, quand avec des imprimantes PCL ou PostScript, l'utilisateur peut configurer son driver à volonté, il peut se retrouver très limité avec une imprimante GDI ;
* les imprimantes GDI ne fonctionnent que sur des systèmes Windows ;
* elles n'utilisent aucun standard, chaque fabricant d'imprimante devant écrire son propre pilote avec ses propres règles. D'où une fiabilité beaucoup plus faible que pour les imprimantes Postscript ou PCL.
La plupart des imprimantes à jet d'encre récentes fonctionnent à base de GDI (principalement pour des questions de performances alors que les problèmes de coût sont plus liés aux imprimantes laser), mais la tendance est d'y ajouter plus de flexibilité : beaucoup fonctionnent désormais sur Mac et la communauté Linux crée de plus en plus de drivers compatibles.

## GDI+

GDI+ est une API introduite avec Windows XP et Windows Server 2003. Il s'agit d'une API offrant des fonctionnalités de plus haut niveau que GDI, ainsi qu'une meilleure qualité de rendu. GDI+ est en partie basé sur GDI dont il utilise certaines fonctions.
À titre d'exemple, et non exhaustivement, GDI+ supporte : un affichage anti-aliasé, le traçage de formes vectorielles simples, le support de dégradés de couleur, le support des formats PNG et JPG ainsi que la gestion de transformations affines 2D.
Revers de sa puissance, GDI+ est entièrement logiciel, ne profitant d'aucune accélération matérielle, au contraire de GDI qui est en partie accéléré matériellement.