Api Get/setDibbits simplement expliqué

Résolu
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005 - 20 nov. 2004 à 20:59
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 21 nov. 2004 à 06:14
Salut

J'aimerais connaitre la methode la plus rapide pour afficher et travailler des images en dur. J'ai cru comprendre que Get/setDibbits étaient les plus employées. Si quelqu'un pouvait m'expliquer clairement comment ca marche (de A à Z si possible...)

Merci a ceux qui arriverons a m'éclairer.

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 nov. 2004 à 22:00
Et oui, il faut passer par beaucoup de handle (bitmap, hdc, etc.) pour utiliser cette source, d'où ma classe !

En effet, les couleurs sont inversées dans le tableau de bits car l'image est stockée non pas de gauche à droite et de haut en bas, mais de droite à gauche et de base en haut !

Utilise ma classe, tu y gagnera beaucoup en facilité d'utilisation, et tu n'y perd que très peu de temps qu'avec une utilisation classique des fonctions ! (note : ca m'a pris au moins 2-3 mois pour vraiment comprendre comment était ordonné le tableau de bits, et comment y accèder rapidement, donc épargne toi ses recherches inutiles en utilisant un truc tout fait... que je ne l'ai pas codé pour rien ;)
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 nov. 2004 à 21:17
Va voir ma source nommée DKS_Gestion_Image : il s'agit d'une classe qui est une interface à ces fonctions, et te permet de les manipuler très facilement, tout en gardant leur rapidité (environ 30 fois plus rapide que les fonctions de l'API GetPixel et SetPixel !)
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
20 nov. 2004 à 21:48
J'aimerais savoir une chose, en fait j'aimerais envoyer un tableau de bits avec l'api SetDIBitsToDevice :

J'ai une image en couleur, et le masque de cette image en niveau de gris. J'ai deja codé moi même l'application du masque et ca fonctionne impec, seulement j'utilise setpixelV et ca ne me parrait pas assez rapide.

Dans mon animation, tout est calculé avant l'affichage, donc le problème de vitesse ne peux venir que des fonctions graphique.

Je voudrais savoir si :

1° je suis obligé de me servir de tout un bazar de handles et de CreateCompatibleDC pour utiliser SetDIBitsToDevice;

2° Si les couleurs sont dans l'ordre B,G,R (c'est ce que j'ai pu comprendre si je me souviens bien de ta src) ?
0
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
20 nov. 2004 à 22:23
Tu as raison, mais c'est un principe chez moi : j'aime savoir comment fonctionne ce dont je me sert, pour apprendre d'une part, et surtout parce que ma nouvelle source va etre assez complexe (Synthèse Audio) et que je n'ai pas envie de rajouter plus de classe ou de modules qu'il y en as déja.

Et puis, je jour ou le grand DARKSIDIOUS ne sera plus, qui c'est qui va expliquer au petit débutant comment fonctionne les apis graphiques, hein? ;)

Je vais me servir de ton exemple 'ombrer une image', retrecir le code aux max et l'incorporer dans ma source, comme ca j'aurais le schéma : Handle ... hDC ... ect ... Bien dans la tête.

Et merci pour l'ordre du tableau, je pensais que c'était foutu comme la structure du fichier bitmap, mais j'était pas sur.

allez a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
21 nov. 2004 à 00:02
Bon j'ai tésté, et ca marche seulement avec les types BitmapInfoHeader, BitmapInfo et RGBQUAD... Enfin pour ce que je veux en faire (juste envoyer un tableau de bits directement dans la memoire).

Donc pas besoin de créer objets, handles et DCs... Ce qui fait que hors déclarations pas plus d'une vingtaine de lignes pour un code qui roule.

En tous cas, ta src 'ombrer une image' est une très bonne source graphique : simple, courte et très détaillée (peut être trop d'ailleurs!).

Merci encore ;)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 nov. 2004 à 06:14
Oui, elle n'est pas très regardée car elle est assez ciblée, mais elle permet de vite se faire une idée sur comment marche les fonctions Get/SetDIBits.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Rejoignez-nous