Je suis nouvelle sur ce forum pour la simple raison que je viens de commencer mon projet info, je dois raliser un programme en C++ " changer la couleur d'une image"; et je suis vraiment nul en C++ . Je voudrais savoir si vous pouviez m'aider en me donnant des pistes ou des mots clés pour créer une pallete de couleur ainsi qu'introduire une pipette?
Merci à tous!!! bonne journée
Jeny
A voir également:
Couleur c++
Code couleur c++ - Meilleures réponses
Transforme une "image couleur" en une "image en niveau de gris" - Meilleures réponses
tu crées un pointeur sur un device context qui n'est pas initialisé. autrement dit GetPixel() cherche dans le vent. le paramètre 1 de GetPixel() doit être le même que celui sur lequel tu affiches ton image, sinon ça ne sert à rien.
Plutôt qu'un int, déclare ta variable Couleur_Clic du type COLORREF. la seule différence est que c'est un unsigned int au lieu d'un int (normal les couleurs négatives ça n'existe pas encore).
mais c'est également mieux pour s'y retrouver. tu vois que les COLORREF sont des couleurs au simple coup d'oeil.
enfin pour voir si Couleur_Clic est plausible, tu peux simplement bidouiller un CString et l'afficher dans une MessageBox() :
c'est nickel si ça marche alors. je veux bien que tu me fasses passer
ton code si t'y vois pas d'inconvénient pour regarder comment tu as
fait car en réalité je n'ai jamais fait ce genre de trucs...
bon alors pour la pipette je suppose qu'il s'agit d'un curseur en forme de pipette ?
dans ce cas c'est très simple :
il y a une fonction qui ressemble à LoadCursor(), regarde dans la msdn comment l'utiliser. ensuite, il existe peut-être des curseurs pipettes préexistantes, mais sinon tu peux t'en créer une directement sous visual avec les outils de dessin et même en gérant la transparence !
je n'ai plus visual sur cet ordi pour l'instant (cause formatage) mais si tu trouves pas je te donnerai plus d'indications demain.
En fait j'ai commencé par faire un programme capable de charger une image , de la visualiser et de la sauvegarder. Maintenant le plus dure reste à faire, je dois ,une fois l'image affichée , pouvoir cliquer sur une de ses couleurs, là, une palette de couleur s'affiche, et l'utilistateur doit choisir la nouvelle couleur qui remplacera la précédente...
On m'a conseillé d'utiliser CColorDialog, ms je ne vois pas du tout comment faire le lien,entre le clic sur la couleur de l'image et l'ouverture de la boite de dialogue!!!
à chaque clic sur ta zone image, déclenche une fonction (évènementielle) tu récupères la position de la souris, tu en déduis la position et la valeur du pixel sur lequel tu as cliqué et tu modifies ton image.
Merci pour ta réponse Loki, ms je ne vois pas comment récupérer les valeur RGB de mon pixel? y a t-il une fonction? j'ai vu qu'on pouvait utiliser GetRValue , GetGValue et GetBvalue? ça peut marcher ac ça? si oui pourais tu m'expliquer comment les utiliser, par raport aux coordonnées de ma souris?
là comme ça je ne sais pas s'il existe des fonctions pour récupérer un pixel à l'écran, il faudrait faire quelques recherches sur la msdn et sur le net, mais tu as toujours la solution de faire une transformation de repère pour passer les coordonnées écran en coordonnées image, ensuite tu tapes dans ton tableau de pixels au bon endroit.
mais tu devrais chercher un peu je pense qu'il doit y avoir quelque chose de tout près qui existe déjà.
les fonctions que tu m'as citées sont utilisables lorsque tu possède une variable contenant ta couleur. regarde sur la msdn à COLORREF et RGB qui sont deux macros. ces fonctions te donnent donc la possibilité de récupérer une valeur sur le total mais pas à partir d'une coordonnée. je pense qu'il faut plus se diriger vers du GetPixel ou GetPoint ou autre je ne sais pas trop ce qu'il existe.
Donc j'ai fais un truc avec avec GetPixel comme tu me l'as conseillé , ça compile le pb , c'est que je n'ai aucun moyen de vérifier si ça marche, de plus quand je clic ça me ferme tout de suite la fnêtre, j'ai dû oublier quelquechose... pourrais tu me dire si mon code peux fonctionner?
Pour mon hdc j'ai réglé mon pb, merci bocoup , par contre quand je clic sur mon image, j'ai bien la fenétre qui s'ouvre, ms les valeur de RGB restent toujours a 255, dc je sais pas si c'est un pb de mon code ou pas...
J'ai une autre petite question ( je suis désolée de te déranger sans arrêt ms rassure toi mon projet se termine bientôt ), il faudrait maintenant que j'éffectue un balayge de mon imagepour reconnaitre tous les pixels qui ont la même RGB que celui sur lequel j'ai cliqué.
Pour cela j'ai fais une double boucle pour balayer sur la largeur et la hauteur. il faut donc que je fasse ensuite un if " les coordonnée du nouveau pixel sont les même" alors "je change aussi sa couleur". non?
Enfin si l'idée est celle la, comment je déclare les nouvelles coordonnées des pixels que je vais balayer? je n'arrive pas a me représenter la chose yen a telement)...
si ton image est blanche, oui c'est normal... sinon c'est qu'il y a un problème dans le code, que tu ne récupères pas ou n'affiches pas les bonnes valeurs de couleur de pixel.
pour ta question, si le but est de modifier la couleur de chaque pixel correspondant au pixel sélectionné alors en effet tu as fait le bon raisonnement.
je ne comprends pas où tu bloques.
C'est bon j'ai réglé le problème et mon programme marche !! c'est génial!! tu y es pour beaucoup!! merci
Mais mtn, je voudrais l'arrenger un peu, tu ne connaitrais pas une fonction pour afficher une pipette? car je ne trouve rien sur le net.
merci encore!!!
penses à mettre réponse acceptée si tout fonctionne bien.
au cas ou tu connaisses pas je t'ai envoyé un MP (message privé) tu peux les consulter tout en haut à droite, le bouto Messages.
++
j'éffectue encore quelques perfectionnement à mon programme et je te l'envoie lorsqu'il est complet ( cad mardi ou mercredi) ça te vas ou tu préfère plus rapidemment?