Récupération code couleur par un click souris [Résolu]

Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 25 août 2013 à 19:37 - Dernière réponse : cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 29 août 2013 à 13:03
Bonjour,

J'ai développé un logiciel de géographie qui affiche entre autre la carte de France avec des départements de couleurs différentes. En cliquant sur un département, le programme récupère la valeur de la couleur qui est ensuite utilisée pour récupérer et afficher des renseignements sur le département cliqué.

Exemple: Si l'utilisateur clique sur la partie Rouge de la carte, le programme récupère la valeur 255 qui est ensuite utilisée pour rechercher les informations sur ce département.

Ce logiciel est utilisé et tourne correctement sur différents ordinateurs XP, Vista et Windows 7.

J'ai eu un problème avec mon PC est j'ai du restaurer le système. Depuis ce jour, mon logiciel ne fonctionne plus. J'ai l'impression que les couleurs affichées sont différentes de celle d'avant la restauration.

Pour un département qui avait avant le code couleur 6737049 le projet détecte aujourd'hui une valeur 6541212.

Je pense que cela vient de mon écran qui doit afficher des couleurs légèrement différentes (non visible à l'oeil nu).

Avez vous une idée sur la question et une suggestion à me faire.

Par avance Merci.


--
Afficher la suite 

Votre réponse

25 réponses

cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 25 août 2013 à 20:43
0
Merci
Salut

pas compris une chose si c'est toi qui definit les couleurs pour ta
carte ex rouge pour le dep 93 rgb(255,0,0)
ce n'est plus rouge c.ad ce n'est plus FF0000 en hexa que tu obtiens ?
Commenter la réponse de cs_ShayW
NHenry
Messages postés
14295
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 25 août 2013 à 21:44
0
Merci
Bonsoir,

Passer de la couleur 63CF9C à 66CC99 ou l'inverse n'est pas trop grave.

Si tu utilises un JPEG comme source, ce n'est pas étonnant, la compression passe par une approximation des couleurs.
Commenter la réponse de NHenry
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 26 août 2013 à 10:26
0
Merci
Pour info: 255 idem à ---> rgb(255,0,0) ) idem à ---> FF0000

--------------------------------------------------------------------

Passer de la couleur 63CF9C à 66CC99 ou l'inverse n'est pas trop grave ?......... Ce n'est pas grave pour un programme qui récupère le code couleur pour réaliser un traitement particulier

If Couleur Lue sur l'écran = 6737049 alors je lance un traitement
If Couleur Lue sur l'écran = 65256 alors je lance un autre traitement
Etc..........


--------------------------------------------------------------------

-Ce logiciel est utilisé et tourne correctement sur différents ordinateurs XP, Vista et Windows 7

Soyez gentil de lire les messages avant de poster une réponse
Commenter la réponse de Cjvg
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 26 août 2013 à 11:37
0
Merci
Bonjour,
Je décomposerais dans ce cas en valeurs R,G,B et déterminerais mes actions en fonction de fourchettes de proportions.
Commenter la réponse de ucfoutu
cs_Le Pivert
Messages postés
5512
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 novembre 2018
- 26 août 2013 à 11:42
0
Merci
Bonjour ,

Ce sujet n'a rien avoir avec la programmation puisqu'il fonctionne très bien sur les autres pc. Il faudrait voir les réglages couleurs de ton écran. Mais tu ne nous dit pas sur quel système tu es: XP, Vista et Windows 7!
Commenter la réponse de cs_Le Pivert
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 26 août 2013 à 15:56
0
Merci
Bonjour,

Le code Couleur lu par le programme sur le PC Windows XP qui ne semble plus fonctionner correctement est: RGB(156,207,99) .

Je viens de faire deux autres essais avec le même programme en cliquant sur la même Couleur:

- Sur un autre PC XP: Le code lu est RGB(153,204,102)
- Sur un PC Vista: Le code lu est également RGB(153,204,102)

Par avance Merci pour votre aide
Commenter la réponse de Cjvg
NHenry
Messages postés
14295
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 26 août 2013 à 18:23
0
Merci
Bonjour,

As-tu essayer de vérifier en faisant un screen shot et de comparer la couleur obtenue ?
Commenter la réponse de NHenry
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 28 août 2013 à 09:53
0
Merci
Bonjour,

Comme je n'avais pas la réponse à mon problème sur ce site, j'ai posé la même question sur Developpez.Net.

Monsieur XylonAkau a eu la gentillesse de me répondre et de me donner la solution à mon problème.

Un paramètre d'affichage à été modifié à mon insu. La correction suivante à été appliquée:

- Panneau de Configuration - Affichage - Paramètres - Qualité Couleur - Remplaçé 16 Bits par 32 Bits.

Encore bravo à Monsieur XylonAkau sur Developpez.Net.

Mille Merci.








--
Commenter la réponse de Cjvg
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 août 2013 à 11:07
0
Merci
Le problème fondamental n'est par pour autant réglé, car :
si cette appli doit être distribuée :
- la configuration pourra être à nouveau différente sur le PC d'exécution
- on ne change jamais la configuration de l'utilisateur.

Commenter la réponse de ucfoutu
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- 28 août 2013 à 11:19
0
Merci
Bonjour Monsieur UcFoutu,

Qu'avez vous à me proposer pour regler ce problème.

Votre solution me sera très précieuse

Par avance Merci

Cordialement.

--
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 août 2013 à 13:29
je l'ai dit plus haut : considérer les proportions de R, G et B (ce sera toujours vrai)
Commenter la réponse de Cjvg
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- Modifié par Cjvg le 28/08/2013 à 15:30
0
Merci
Bonjour,

Je suis désolé, mais je ne sais pas comment considérer les proportions de RGB.

Dans mes programmes j'ai les instructions:

Couleur = Picture1.Point(X, Y)
if Couleur = 16777215 then Call .........

Sauf erreur de ma part je pense que le traitement sera identique avec l' instructions ci-dessous:

if Picture1.Point(X, Y) = rgb(187,783,199) then Call ........

J'ai un petit outil qui me permet d'afficher toutes la palette de couleur et, pour chacune d'elle d'afficher le code couleur
numérique et RGB. --> 16777215 est identique à rgb(187,783,199).

------------------------------------------------------------------

Il y a certainement quelque chose que je ne comprends pas.

Auriez vous l'amabilité de préciser votre réponse (si vous avez un exemple simple de deux instructions ce serait plus que parfait).

Par avance Merci.
Commenter la réponse de Cjvg
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 août 2013 à 16:29
0
Merci
rgb(187,783,199)
n'existe pas. Aucune composante ne saurait excéder 255 !
Voici comment on extrait les composantes RGB d'une couleur dont on a la valeur en Long (exemple) :

Dim R As Integer, G As Integer, B As Integer, coul As Long
   coul = 12767201

    R = &HFF& And coul
    G = (&HFF00& And coul) \ 256
    B = (&HFF0000 And coul) \ 65536
    
    MsgBox "R = " & R & vbCrLf & "G = " & G & vbCrLf & "B = " & B & vbCrLf


A partir de ces valeurs absolues, ont détermine les valeurs relatives (la composition, donc, de la couleur). Et on travaille ensuite sur des fourchettes de ces valeurs relatives (arithmétique)
Si entre xR% et yR% de rouge et entre xB% et yB% de vert et entre xB% et yB% de bleu, alors ...
Ce n'est que de l'arithmétique.
Commenter la réponse de ucfoutu
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 28/08/2013 à 16:48
0
Merci
J'ajoute qu'il est plus que probable que ces mésaventures résultent du fait que tu lis les couleurs affichées (d'où l'intervention de la configuration) au lieu de lire celles correspondant à un fichier (coordonnées dans le fichier) qui, elles, restent toujours identiques.
La conception serait alors à reconsidérer.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Cjvg
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Dernière intervention
26 octobre 2017
- Modifié par Cjvg le 28/08/2013 à 16:51
0
Merci
Je vais faire des essais.

Merci pour votre réponse.


rgb(187,783,199) Erreur de ma part cela est évident.
Commenter la réponse de Cjvg
cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 28 août 2013 à 17:08
0
Merci
Bonjour Ucfoutu

après avoir testé c'est plutot
R = (&HFF0000 And coul) \ 65536
      G = (&HFF00& And coul) \ 256
       B = &HFF& And coul
cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 28 août 2013 à 22:21
plus rien compris
http://www.colorcombos.com/colors/FF0000
avec la calculatrice si je convertis FF0000 en dec > 16711680
FF0000 ce n'est pas la couleur rouge ?
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 29 août 2013 à 11:15
Euh...
Mets donc un label label1 sur un form et ce code au click d'un bouton de commande :
Label1.BackColor = &HFF0000
MsgBox "c'est bleu !"
Label1.BackColor = 16711680
MsgBox "c'est également bleu, hein ..."
Label1.BackColor = 255
MsgBox "voilà le rouge ..."
Label1.BackColor = &HFF
MsgBox "voilà encore le rouge ..."
MsgBox &HFF0000 = &HFF

FF n'est pas FF0000
et maintenant :
MsgBox Hex(RGB(255, 0, 0))
Le rouge est FF

Et pourquoi donc une calculatrice ?
VB6 possède Val et Hex.
Val("&HFF0000") ===>> donne 16711680
Val("&HFF") =====>> donne 255
Hex(rgb(255,0,0)) ===>> donne FF et non FF0000
msgbox RGB(255,0,0) = vbRed donne true
MsgBox 255 = vbRed donne true
MsgBox 16711680 = vbRed donne false
MsgBox 16711680 = vbBlue donne true
Msgbox Val("&HFF0000") = vbblue donne true
cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 29 août 2013 à 12:12
c'est bien bleu au moins je ne suis pas daltonien (:-
je me rends compte que ma méthode pour convertir rgb(r,g,b) en hexa est fausse
si j'ai rgb(255,0,0) alors je dis la valeur hexa pour chacun r en hexa est FF , g = 00 et b = 00 ce qui donne FF0000 et c'est faut ,c'est bleu pas rouge alors plutot former à l'inverse 0000FF
rgb(0,0,255) en hexa FF0000
rgb(80,0,255) => FF0050
Utilisateur anonyme - 29 août 2013 à 12:34
Salut à tous,

Tu codes en vb6 maintenant cs_ShayW ? Sinon montre le code utilisé pour convertir du rgb en hexa.
cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 29 août 2013 à 13:03
Salut banana32
ben oui c'est redevenu à la mode LOL
non en faite avant le vb.net je codais en vb6 et en plus dans le forum
les questions en vb.net se font rares
bon je retourne à mon projet
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.