PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Changer la couleur de pixel non contigus
Changer la couleur de pixel non contigus
Started by contact, Mar., 27 2006 2:47 AM - 9 replies
Posted on March, 27 2006 - 2:47 AM
Bonjour.
Je cherche le moyen de changer la couleur de tous les pixels d'une même couleur dans une image (un genre de dRemplissage mais sur des pixels pas forcément contigus).
Merci de votre aide.
Posted on March, 27 2006 - 12:34 PM
Pour obtenir un résultat presque instantané, il faut utiliser l'API.

- Il faut passer le DC du contrôle contenant l'image, ou celui correspondant au bitmap.
- Ensuite on créé un DC compatible : CreateCompatibleDC
- Puis un DIB : CreateDIBSection
- On sélectionne le DIB dans le DC compatible : SelectObject
- On copie le DC source dans le DC destination : BitBlt
- On récupère un pointeur sur le DIB : GetObject
- On fait une boucle pour lire la couleur des pixels et remplacer ceux qui correspondent
- Puis on copie le DC destination dans le DC source : BitBlt
- Enfin on libère les ressources allouées : DeleteDC, DeleteObject

Patrice Terrier - Consultant
Tel +33(0)476 981 673
pterrier@zapsolution.com
www.zapsolution.com
Posted on March, 27 2006 - 5:14 PM
Merci pour votre réponse mais je n'ai jamais utilisé d'API et ne comprends docn pas grand chose à tout ça... (DC ? DIB ?) Vous serait-il possible de m'éclairer avec quelques lignes de codes Windev ?
Merci beaucoup,
Cyril.
Posted on March, 27 2006 - 9:16 PM
Regardez SourisPosX et SourisPosY ainsi que dPixelCouleur et dPoint dans l'aide.

et faites une boucle de lecture correspondant au dimensions x et y de votre image.

Mais ce sera 100 fois plus long qu'en utilisant l'API DIB...
Posted on March, 27 2006 - 10:41 PM
J'ai déjà fait ce type d'essai et, effectivement, c'est trop long.
Je suis très intéressé pour utiliser l'API mais je ne sais pas faire, c'est tout.
Alors, si vous aviez quelques minutes à perdre en m'expliquant un peu plus comment on met ça en oeuvre dans Windev, je suis preneur...

Cordialement,
Cyril.
Posted on March, 27 2006 - 10:41 PM
Je suis un inconditionnel de M. TERRIER.
Je suis ce post et je comptais bien trouver la procédure avec les différentes APIs et mince, il ne veut pas les mettre
Dommage !
Posted on March, 28 2006 - 8:32 AM
Comme WinDev ne permet pas, à ma connaissance, de manipuler des pointeurs.
La seule solution pour obtenir le résultat escompté, c'est d'écrire une DLL spécifique, ou de faire l'acquisition d'un contrôle graphique commercial...

Note: si quelqu'un sait comment manipuler des pointeurs avec WinDev, alors je veux bien écrire la fonction gratuitement :-)

Patrice Terrier - Consultant
Tel +33(0)476 981 673
pterrier@zapsolution.com
www.zapsolution.com
Posted on March, 28 2006 - 4:25 PM
Bonjour,

Je suis loin d'être experte pour manipuler des pointeurs et ne l'ai pas
vraiment utilisé, mais n'est-ce pas ce que l'aide propose sous la fonction :
Transfert".

Cordialement.

"Patrice Terrier" <pterrier@zapsolution.com> a écrit dans le message de
news:4428663a@news.pcsoft.fr...

Comme WinDev ne permet pas, à ma connaissance, de manipuler des pointeurs.
La seule solution pour obtenir le résultat escompté, c'est d'écrire une

DLL spécifique, ou de faire l'acquisition d'un contrôle graphique
commercial...

Note: si quelqu'un sait comment manipuler des pointeurs avec WinDev, alors

je veux bien écrire la fonction gratuitement :-)

Patrice Terrier - Consultant
Tel +33(0)476 981 673
pterrier@zapsolution.com
www.zapsolution.com



Posted on March, 28 2006 - 6:20 PM
Juliane--

La fonction WinDev "Transfert" est une encapsulation de l'API "MoveMemory"
qui permet de déplacer un bloc mémoire d'un endroit à un autre.

C'est très utile, mais çà ne remplace pas les DWORD PTR.
Posted on March, 28 2006 - 8:28 PM
Bonjour
je viens de lire "WinDev ne permet pas, à ma connaissance, de manipuler des
pointeurs."
que veut tu dire exactement car j'utilise les pointeurs avec des api et cela
fonctionne

"Patrice Terrier" <pterrier@zapsolution.com> a écrit dans le message de
news: 4428663a@news.pcsoft.fr...

Comme WinDev ne permet pas, à ma connaissance, de manipuler des pointeurs.
La seule solution pour obtenir le résultat escompté, c'est d'écrire une
DLL spécifique, ou de faire l'acquisition d'un contrôle graphique
commercial...

Note: si quelqu'un sait comment manipuler des pointeurs avec WinDev, alors
je veux bien écrire la fonction gratuitement :-)

Patrice Terrier - Consultant
Tel +33(0)476 981 673
pterrier@zapsolution.com
www.zapsolution.com