Article de reference

Interface du périphérique graphique

L'interface de périphérique graphique dans l' architecture de Windows NT Par exemple, GDK utilise GDI . L' interface graphique ( GDI ) est un composant hérité de Microsoft Windo...

L'interface de périphérique graphique dans l' architecture de Windows NT
Par exemple, GDK utilise GDI .

L' interface graphique ( GDI ) est un composant hérité de Microsoft Windows chargé de représenter des objets graphiques et de les transmettre à des périphériques de sortie tels que des moniteurs et des imprimantes . Il a été remplacé par l'API DirectDraw et plus tard par l'API Direct2D . Les applications Windows utilisent l'API Windows pour interagir avec GDI, pour des tâches telles que le dessin de lignes et de courbes, le rendu de polices et la gestion de palettes . Le sous-système Windows USER utilise GDI pour restituer des éléments d'interface utilisateur tels que des cadres de fenêtre et des menus. D'autres systèmes ont des composants similaires à GDI ; par exemple : Mac OS a QuickDraw , et Linux et Unix ont le protocole de base X Window System .

Les avantages les plus significatifs de GDI par rapport aux méthodes plus directes d'accès au matériel sont peut-être ses capacités de mise à l'échelle et sa représentation abstraite des périphériques cibles. Grâce à GDI, il est possible de dessiner sur plusieurs périphériques, tels qu'un écran et une imprimante, et d'espérer une reproduction correcte dans chaque cas. Cette capacité est au cœur de la plupart des applications « Ce que vous voyez est ce que vous obtenez » pour Microsoft Windows.

Les jeux simples qui ne nécessitent pas de rendu graphique rapide peuvent utiliser GDI. Cependant, GDI est relativement difficile à utiliser pour l'animation avancée, ne permet pas la synchronisation avec les images vidéo individuelles de la carte vidéo et ne dispose pas de la rastérisation matérielle pour la 3D. Les jeux modernes utilisent généralement DirectX , Vulkan ou OpenGL à la place.

Détails techniques

Dans GDI, un contexte de périphérique (DC) définit les attributs du texte et des images pour le périphérique de sortie, par exemple, l'écran ou l'imprimante. GDI conserve le contexte réel. La génération de la sortie nécessite un handle vers le contexte de périphérique (HDC). Une fois la sortie générée, le handle peut être libéré.

GDI utilise l'algorithme de dessin de lignes de Bresenham pour dessiner des lignes aliasées.

Historique des versions

Les premières versions

GDI était présent dans la version initiale de Windows. Les programmes MS-DOS avaient manipulé le matériel graphique à l'aide d'interruptions logicielles (parfois via le BIOS vidéo ) et en manipulant directement la mémoire vidéo . Le code écrit de cette manière s'attend à ce qu'il soit le seul utilisateur de la mémoire vidéo, ce qui n'était pas tenable dans un environnement multitâche , comme Windows. Le magazine BYTE , en décembre 1983, a évoqué les plans de Microsoft pour un système permettant de produire des graphiques à la fois sur des imprimantes et des moniteurs avec le même code dans la première version à venir de Windows.

Sous Windows 3.1x et Windows 9x , GDI peut utiliser les fonctionnalités Bit blit pour l'accélération 2D, si un pilote de carte graphique approprié est installé.

Windows XP

Avec l'introduction de Windows XP , GDI+ a complété GDI. GDI+ a été écrit en C++. Il ajoute des graphiques 2D anti-aliasés, des coordonnées à virgule flottante, un dégradé de couleurs, une gestion de chemin plus complexe, un support intrinsèque pour les formats de fichiers graphiques modernes comme JPEG et PNG , et un support pour la composition de transformations affines dans le pipeline de vue 2D. GDI+ utilise des valeurs RGBA pour représenter les couleurs. L'utilisation de ces fonctionnalités est évidente dans les composants Windows XP, tels que Microsoft Paint , Windows Picture and Fax Viewer , Photo Printing Wizard et l'économiseur d'écran My Pictures Slideshow. Leur présence dans la couche graphique de base simplifie grandement les implémentations de systèmes graphiques vectoriels tels qu'Adobe Flash ou SVG . De plus, .NET Framework fournit une interface gérée pour GDI+ via l' System.Drawing espace de noms .

Bien que GDI+ soit inclus avec Windows XP et versions ultérieures, la bibliothèque dynamique GDI+ peut également être livrée avec une application et utilisée sur des versions plus anciennes de Windows.

En raison des capacités supplémentaires de traitement de texte et d'indépendance de résolution de GDI+, le processeur se charge du rendu du texte. Le résultat est d'un ordre de grandeur plus lent que le GDI accéléré par le matériel . Chris Jackson a publié des tests indiquant qu'un morceau de code de rendu de texte qu'il avait écrit pouvait restituer 99 000 glyphes par seconde dans GDI, mais le même code utilisant GDI+ restituait 16 600 glyphes par seconde.

GDI+ est similaire (dans son objectif et sa structure) au sous - système QuickDraw GX d' Apple et aux bibliothèques open source libart et Cairo .

Windows Vista

Sous Windows Vista, toutes les applications Windows, y compris les applications GDI et GDI+, s'exécutent dans le nouveau moteur de composition, Desktop Window Manager (DWM), qui est accéléré par le matériel. Par conséquent, le GDI lui-même n'est plus accéléré par le matériel. En raison de la nature des opérations de composition, les déplacements de fenêtre peuvent être plus rapides ou plus réactifs car le contenu sous-jacent n'a pas besoin d'être restitué par l'application.

Windows 7

Windows 7 inclut l'accélération matérielle GDI pour les opérations de blitting dans le modèle de pilote d'affichage Windows v1.1 . Cela améliore les performances GDI et permet à DWM d'utiliser la mémoire vidéo locale pour la composition, réduisant ainsi l'empreinte mémoire système et augmentant les performances des opérations graphiques. La plupart des opérations GDI primitives ne sont toujours pas accélérées par le matériel, contrairement à Direct2D . GDI+ continue de s'appuyer sur le rendu logiciel dans Windows 7.

Imprimantes GDI

Une imprimante GDI ou Winprinter (analogue à un Winmodem ) est une imprimante conçue pour accepter la sortie d'un ordinateur hôte exécutant Windows. L'ordinateur hôte effectue tout le traitement d'impression : GDI restitue une page sous forme de bitmap, que le pilote d'imprimante reçoit, traite et envoie à l'imprimante associée. La combinaison de GDI et du pilote est bidirectionnelle ; ils reçoivent des informations de l'imprimante, comme si elle est prête à imprimer ou si elle n'a plus de papier.

Les imprimantes qui ne dépendent pas de GDI nécessitent du matériel, du micrologiciel et de la mémoire pour le rendu des pages, tandis qu'une imprimante GDI utilise l'ordinateur hôte pour cela. Cependant, une imprimante avec son propre langage de contrôle peut accepter les entrées de n'importe quel périphérique avec un pilote approprié, tandis qu'une imprimante GDI nécessite un PC fonctionnant sous Windows. Les imprimantes GDI peuvent être mises à la disposition des ordinateurs sur un réseau si elles sont connectées en tant qu'imprimantes partagées sur un ordinateur sous Windows. Certains pilotes GDI « génériques » tels que pnm2ppaont été écrits ; ils visent à rendre les imprimantes GDI compatibles avec les systèmes d'exploitation non Windows tels que FreeBSD , mais ils ne peuvent pas prendre en charge toutes les imprimantes.

Afin de simplifier la création de pilotes pour les imprimantes Winprinters, le pilote d'imprimante universel Microsoft a été créé. Il permet aux fournisseurs d'imprimantes d'écrire des « mini-pilotes » de type Generic Printer Description (GPD) qui décrivent les capacités et les commandes de l'imprimante en texte clair, plutôt que d'avoir à développer des pilotes en mode noyau.

Microsoft s'est éloigné de ce modèle d'impression avec Open XML Paper Specification .

Limites

Chaque fenêtre consomme des objets GDI. À mesure que la complexité de la fenêtre augmente, avec des fonctionnalités supplémentaires telles que des boutons et des images, son utilisation d'objets GDI augmente également. Lorsque trop d'objets sont utilisés, Windows ne peut plus dessiner d'objets GDI, ce qui entraîne un mauvais fonctionnement du logiciel et un fonctionnement du programme bloqué et sans réponse. De nombreuses applications sont également codées de manière incorrecte et ne parviennent pas à libérer les objets GDI après utilisation, ce qui ajoute encore au problème. Le nombre total d'objets GDI disponibles varie d'une version de Windows à l'autre : Windows 9x avait une limite de 1 200 objets au total ; Windows 2000 a une limite de 16 384 objets ; et Windows XP et les versions ultérieures ont une limite configurable (via le registre) qui est par défaut de 10 000 objets par processus (mais un maximum théorique de 65 536 pour l'ensemble de la session). Windows 8 et les versions ultérieures augmentent la limite d'objets GDI à 65 536 par session de connexion utilisateur.

Les versions antérieures de Windows, telles que Windows 3.1 et Windows 98, incluaient un programme de mesure des ressources permettant à l'utilisateur de surveiller la quantité totale de ressources GDI du système utilisée. Ce compteur de ressources consommait lui-même des objets GDI. Les versions ultérieures telles que Windows 2000 et Windows XP peuvent signaler l'utilisation des objets GDI pour chaque programme dans le Gestionnaire des tâches, mais elles ne peuvent pas indiquer à l'utilisateur la capacité GDI totale disponible.

Le dépassement de la capacité GDI peut affecter Windows lui-même, empêchant l'ouverture de nouvelles fenêtres, l'affichage des menus et l'apparition de boîtes d'alerte. La situation peut être difficile à résoudre et peut potentiellement nécessiter une réinitialisation forcée du système, car elle empêche les programmes système de fonctionner. Dans Windows 8 et 8.1, une déconnexion forcée se produit à la suite d'un dépassement de capacité GDI, au lieu d'un redémarrage.

Successeur

Direct2D est le successeur de GDI et GDI+. Son frère, DirectWrite , remplace Uniscribe . Ils ont été livrés avec Windows 7 et Windows Server 2008 R2, et étaient disponibles pour Windows Vista et Windows Server 2008 (avec Platform Update installé). Plus tard, Microsoft a développé Win2D , une bibliothèque de classes gratuite et open source de type GDI. Le public cible de Win2D sont les développeurs qui utilisent C++, C# et Visual Basic.NET pour développer des applications de la plateforme Windows universelle .

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index