PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Changer la couleur de pixel non contigus
Changer la couleur de pixel non contigus
Iniciado por contact, 27,mar. 2006 02:47 - 9 respuestas
Publicado el 27,marzo 2006 - 02:47
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.
Publicado el 27,marzo 2006 - 12:34
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
Publicado el 27,marzo 2006 - 17:14
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.
Publicado el 27,marzo 2006 - 21:16
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...
Publicado el 27,marzo 2006 - 22:41
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.
Publicado el 27,marzo 2006 - 22:41
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 !
Publicado el 28,marzo 2006 - 08:32
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
Publicado el 28,marzo 2006 - 16:25
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



Publicado el 28,marzo 2006 - 18:20
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.
Publicado el 28,marzo 2006 - 20:28
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