Page 1 sur 6

Gdi+ 1.0 documentation pour PB

Publié : lun. 15/oct./2007 21:33
par Anonyme2
Voilà,

il y a un an que j'ai commencé ce travail (avec une pause de 3 mois).

Voici un description rapide de Gdi+ (très rapide)
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.
Le fichier exécutable téléchargeable ci-après contient la doc et les exemples concernant GDI+

Le fichier est un executable, il n'y aura pas de zip. Il fait environ 12 Mo et l'extraction de l'ensemble nécessite entre 15 et 16 Mo de place, je ne fais aucun test pour savoir s'il y a assez de place sur le disque.
Vous pouvez sélectionner le dossier d'extraction et vous devez absolument conserver l'arborescence pour que les exemples fonctionnent (pour que le fichier d'exemple retrouve le bon chemin du wrapper)
Je n'écris rien dans la base de registre.
Il y a les fichiers du wrapper, le fichier d'aide en français, les fichiers d'exemples, les fichiers h (XP et Vista) et le fichier .lib nécessaire au fonctionnement et les images pour les exemples.
Le wrapper utilise les macros de Freak (ComFramework) et l'installation détecte si vous les avez ou non et propose un lien sur le zip à télécharger, si c'est le cas téléchargez et installez le tout dans le dossier PB.
Je sais, la doc peut paraître hermétique mais si vous y mettez un peu de volonté, vous devriez pouvoir utiliser Gdi+
Commencez par des exemples simples et pas par les matrices ou l'énumération des métafichiers.
J'aimerais pouvoir améliorer la doc (il manque encore la définition de nombreuses constantes).

J'ai fait beaucoup de copier/coller pour les exemples, il est possible que les commentaires de certains fichiers soit faux :roll:

J'attends vos remarques, corrections, amélioration des définitions, nouveaux exemples etc.

Publié : lun. 15/oct./2007 22:24
par comtois
J'ai quelques soucis pour l'installation , mais il est tard, je regarderai tout ça à tête reposée. J'ai parcouru rapidement les répertoires et les exemples proposés, ainsi que le fichier d'aide , c'est vraiment impressionnant le travail que tu as fourni. Je t'en dirai plus dans le courant de la semaine, dès que j'aurai trouvé un peu de temps pour me plonger dedans.

En attendant merci de partager avec nous le fruit de ton labeur.

[EDIT]
En gros, aucun fichier n'est pas installé dans le répertoire par défaut.
Si je propose un autre répertoire, tous les fichiers sont copiés (les exemples, l'aide) et ensuite j'ai le même problème lorsqu'il s'agit de copier les .lib dans le répertoire de purebasic.

Publié : lun. 15/oct./2007 22:30
par Anonyme2
comtois a écrit :J'ai quelques soucis pour l'installation , mais il est tard, je regarderai tout ça à tête reposée.
ha bon, j'ai fait plein de tests sous XP, Vista, Windows 2000 network sans problème

Tu me dira quoi demain
comtois a écrit :'ai parcouru rapidement les répertoires et les exemples proposés, ainsi que le fichier d'aide , c'est vraiment impressionnant le travail que tu as fourni. Je t'en dirai plus dans le courant de la semaine, dès que j'aurai trouvé un peu de temps pour me plonger dedans.

En attendant merci de partager avec nous le fruit de ton labeur.
Merci, j'espère que ca donnera envie de s'y mettre

Publié : lun. 15/oct./2007 22:34
par Backup
ouaip ! c'est clair, que la y a du boulot !! 8O

sacres Doc !!

perso aucun problèmes d'instal, j'ai même suivi le lien pour télécharger ce qui manque !! :D

par contre sous XP , je n'ai pas activé l'installe des fichiers pour Vista :)
je ne pense pas m'etre trompé :)

tous ça m'a l'air tres sympath, ça va prendre un mois a tout regarder :)

Merci Denis, sacres boulot que voila :)

as tu utilisé GDI pour ton installateur ?? (je suppose que oui :D )

Merci beaucoup :)

Publié : lun. 15/oct./2007 22:42
par Backup
j'ai un bug sur le test dossier "Graphic B_C"

gdicreatehalftonepalette.pb

Purebasic ASM[749]

CallsysBuffertounicode@4
undefined Symbol

:D

Publié : lun. 15/oct./2007 23:09
par comtois
Youpi ; ça fonctionne :)

J'ai tout simplement copié la lib à la main dans le répertoire de PureBasic et c'est ok , tout fonctionne , enfin je n'ai pas encore testé les 683 exemples :)

Dobro , il faut sélectionner le mode unicode dans les options du compilateur.

Publié : mar. 16/oct./2007 0:10
par Backup
comtois a écrit :Dobro , il faut sélectionner le mode unicode dans les options du compilateur.
ha ok ! Merci ça marche :)

Publié : mar. 16/oct./2007 5:11
par Anonyme2
Dobro a écrit :j'ai un bug sur le test dossier "Graphic B_C"

gdicreatehalftonepalette.pb

Purebasic ASM[749]

CallsysBuffertounicode@4
undefined Symbol

:D
J'avais installé la version 4.10 betat 4 qui donne cette erreur avec les chaine unicode. Il faut utiliser PB entre 4.02 et 4.10 beta 3.

Normalement, avec ou sans le mode unicode sélectionné, les exemples doivent fonctionner, c'est un bug de la beta 4 que je n'utilise pas tant qu'il y a ce bug

Publié : mar. 16/oct./2007 5:17
par Anonyme2
comtois a écrit :Youpi ; ça fonctionne :)

J'ai tout simplement copié la lib à la main dans le répertoire de PureBasic et c'est ok , tout fonctionne , enfin je n'ai pas encore testé les 683 exemples :)
La je suis inquiet 8O , c'es quoi la lib dont tu parles ?

Le fichier d'instalation copie le fichier gdiplus.lib dans le dossier qui va bien (PB).

Publié : mar. 16/oct./2007 5:59
par Anonyme2
Dobro a écrit :par contre sous XP , je n'ai pas activé l'installe des fichiers pour Vista :)
je ne pense pas m'etre trompé :)
Heu, normalement l'activation ne fonctionne que sous Vista (enfin c'est ce que dit la doc PB) et je n'ai pas l'invite sous XP sur ma bécane.
Bizarre

Dobro a écrit : as tu utilisé GDI pour ton installateur ?? (je suppose que oui :D )
Non, j'avais commencé avec mais je n'utilise que des procédure avec des dégradés simples, il fallait tester si GDI+ était présent et écrire d'autre procédures le cas échéant, si les thèmes étaient activés ou non, ça entraînait beaucoup de code pour un simple dégradé, alors j'utilise les fonction GDI pour les dégradés.

J'ai skiné plein de choses mais le plus fastidieux c'est les options buttons car c'est à toi de tout gérer, de A à Z.

Publié : mar. 16/oct./2007 9:42
par comtois
Denis a écrit :La je suis inquiet 8O , c'es quoi la lib dont tu parles ?

Le fichier d'instalation copie le fichier gdiplus.lib dans le dossier qui va bien (PB).
oui c'est bien ce fichier gdiplus.lib que j'ai copié dans le dossier qui va bien.

Je t'ai mis en mp le message d'erreur que j'avais quand ton installateur tentait de le copier.

PS : L'installation dans le dossier de mon choix s'est bien passée.Sauf l'instal de la lib

Publié : mar. 16/oct./2007 9:53
par Backup
je ne suis pas arrivé a trouver dans la Doc une explication de

Code : Tout sélectionner

Gdiplus_StartDrawing
et du

Code : Tout sélectionner

Gdiplus_StopDrawing()
non plus d'ailleurs :)

bien que je suppose que ça fonctionne comme leur equivalent Purebasic mais
ce serai bien d'y avoir acces dans la Doc :)

Publié : mar. 16/oct./2007 11:23
par Frenchy Pilou
juste une petite question c'est quoi GDI? :oops: Graphics Device Interface ?

Publié : mar. 16/oct./2007 11:26
par comtois
voila un extrait de l'aide incluse dans le pack :
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.

Publié : mar. 16/oct./2007 11:50
par Jacobus
Denis, j'ai quelques soucis :oops:
Installation avec ton installeur (très joli) sur xp home sp2

J'ai dû modifier les chemins des fichiers include : "..\..\" non reconnu, avec ça pb ne les trouve pas.

en compilant un exemple au pif j'ai eu cette fonction non reconnue :
DefineGUID(FormatIDImageInformation, $E5836CBE, $5EEF, $4F1D, $AC, $DE, $AE, $4C, $43, $B6, $08, $CE)
Arg! :?