Cjvg
Messages postés330Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention26 octobre 2017
-
25 août 2013 à 19:37
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
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.
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201955 25 août 2013 à 20:43
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 ?
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..........
cs_Le Pivert
Messages postés7870Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention23 janvier 2023137 26 août 2013 à 11:42
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!
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018222 28 août 2013 à 11:07
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.
Cjvg
Messages postés330Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention26 octobre 2017 Modifié par Cjvg le 28/08/2013 à 15:30
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).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018222 28 août 2013 à 16:29
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.
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.
Cjvg
Messages postés330Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention26 octobre 2017 Modifié par Cjvg le 28/08/2013 à 16:51
Je vais faire des essais.
Merci pour votre réponse.
rgb(187,783,199) Erreur de ma part cela est évident.
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201955 28 août 2013 à 17:08
Bonjour Ucfoutu
après avoir testé c'est plutot
R = (&HFF0000 And coul) \ 65536
G = (&HFF00& And coul) \ 256
B = &HFF& And coul
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018222 28 août 2013 à 19:32
Bonjour, ShayW
Non ...
Pars de coul = RGB(255,0,0) et constate ton erreur.
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201955 28 août 2013 à 20:06
je ne vois pas l'erreur
pour rgb(255,0,0)
coul = 16711680
selon ton code j'obtiens
r = 0
g = 0
b = 255
à moins que je n'ai pas compris ce que je dois obtenir
NHenry
Messages postés15032Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention26 janvier 2023156 28 août 2013 à 20:15
Tu dois obtenir R 255, G 0, B 0
Toujours dans l'ordre RGB.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018222 28 août 2013 à 21:43
Non, ShayW ...
16711680 n'est pas RGB(255,0,0), mais RGB(0,0,255) (et c'est le bleu) !
RGB(255,0,0) =>> coul = 255 (et c'est le rouge)
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201955 28 août 2013 à 22:21
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
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
Tu codes en vb6 maintenant cs_ShayW ? Sinon montre le code utilisé pour convertir du rgb en hexa.
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201955 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