PureBasic & GDI+ 1.0
Introduction



 

Les différents OS Windows utilisent GDI pour tout ce qui touche au graphisme. GDI est l'abréviation de Graphics Device Interface, et est une Dll avec de nombreuses fonctions. Avec le temps GDI a évolué.

L'arrivée de GDI+ version 1.0 avec Windows XP a modifié l'approche de la programmation du graphiste. GDI+ 1.0 est une dll qui possède 609 fonctions.
GDI+ constitue une couche placée entre l'application et les dispositifs graphiques (graphie devices).

GDI+ permet (entre autre) :

- Graphisme vectoriel en 2D avec gestion possible des coordonnées en nombres réels simple précision.
- Gestion de l'anti-crénelage (anti-aliasing) des images
- Nombreux formats d'images supportés (BMP, GIF, JPEG, EXIF, PNG, TIFF)
- Gestion de l'échelle des graphiques, on peut faire un zoom d'une image avec peu de code
- Gestion de la transparence
- Gestion différents modes de combinaison de couleur
- Gestion des textures, des brush (différents types de dégradés linéaires)
- Gestion des pen (gestion de différents formats de traits comme les pointillés etc.)
- Possibilité de définir les embouts des lignes soit avec des formes prédéfinies soit personnalisées.
- Gestion des région pour obtenir les effets voulus (exclusion, intersection, union et d'autres)
- Gestion des Path (chemin) qui délimitent les contours des formes géométriques, ces formes pouvant être remplies avec des brush dédiées.
- Gestion des Container graphiques

GDI+ permet de manipuler facilement le 2D, sans avoir à sélectionner dans le dc, le pen, la font, la brush etc puis restitue le dc dans son état initial avant de retourner (c'est assez pénible avec GDI). On peut manipuler les images, les mettre à l'échelle, faire une rotation angulaire, une translation, cisailler ou mixer ces fonctions assez facilement. Les pen disposent de plusieurs fonctions pour faire des tirets etc. On peut définir des embouts prédéfinis pour les lignes comme par exemple des embouts de flèches ou créer des embouts personnalisés. Les brush sont assez nombreuses et diverses, on peut faire des dégradés très facilement en passant la couleur de départ et celle d'arrivée. On peut aussi définir une texture pour une brush à partir d'une image etc. Les régions peuvent être combinées pour obtenir les effets voulus (exclusion, intersection, union et d'autres). Différents types de formes sont réalisables facilement, (courbes de Bézier, camembert, polygones), ces formes pouvant être remplies avec tous les types de brush etc. Il y a aussi la gestion de la transparence avec le mode d'interpolation, composite, de qualité, toutes ces fonctions permettent d'agir sur le rendu final.

GDI+ est orienté objet et Microsoft ne donne presque aucune information sur les différentes fonctions appelées Flat API. Microsoft a développé un wrapper en C++ et aussi pour .Net avec des fonctions propres aux wrapper, la documentation Microsoft est dédiée à ces wrapper.

 

La documentation GDI+ que j'ai écrite pour PureBasic (fichier chm) fournie avec les exemples est dédiée aux Flat API, c'est-à-dire l'appel direct des fonctions de la dll, ce que Microsoft déconseille mais qui fonctionne bien sous réserve d'initialiser correctement GDI+, de détruire les objets puis de terminer l'utilisation de GDI+.

Il est obligatoire d'initialiser au moins une fois GDI+ dans son programme (on peut le faire plusieurs fois et c'est même recommandé de le faire avec des threads ou des fonctions encapsulées dans une Dll). A partir du moment ou l'on passe le pointeur d'initialisation à la fonction de "fermeture" de GDI+, les objets deviennent inaccessible.

Reportez-vous à la section d'initialisation de GDI+ du fichier d'aide ici

 

Voici la page Microsoft dédié à GDI+

http://msdn2.microsoft.com/en-us/library/ms533798.aspx

 

Et quelques sites dédiés à GDI+

Le site de José Roca en anglais (excellent site avec diverses rubriques dont GDI+, orienté PowerBasic)

http://com.it-berater.org/gdiplus/GdiPlus.htm

L'ancien forum de José Roca en anglais (excellent avec pas mal d'exemples, orienté PowerBasic)

http://www.forum.it-berater.org/index.php?PHPSESSID=3c1ff88a4f11600fccb5ee727caa6252&board=21.0

Le nouveau forum de José Roca en anglais (plusieurs rubriques dont une GDI+)

http://www.jose.it-berater.org/smfforum/index.php
La section GDI+ en anglais
http://www.jose.it-berater.org/smfforum/index.php?board=35.0

Le site de bob powell en anglais

http://www.bobpowell.net/