Gambas France BETA


Pas de compte ? Incription

|RESOLU] Des idées (simples !) sur la conversion de couleur ? (lundi, 2 novembre 2009, 19:47) par PABLODETAIX

Ce sujet est résolu.

1
AuteurMessages
Admin#1 Posté le 27/12/2009 à 22:53:00
Bonjour à tous,
ok il y a les couleurs définies en "entier", "RGB", "HSV" et d'autres !
Gambas a les fonctions Color.RGB(r,v,b) et Color.HSV(....)
mais si on veut faire l'inverse..
par exemple pour "alimenter" de l'OpenGl....
je n'ai pas trouvé le moyen ni de convertir simplement en gambas dans ce sens (Entier=>RGB) ni de lire les valeurs que le composant "ColorChooser" affiche .... rien que pour m'agacer .... humour..

je complète : je vois pourtant bien que .ColorInfo existe,
et si on jette un oeil(affolé !) dans les sources il y a bien les méthodes static et valeur R/V/B etc.

avec tt ça j'arrive pas a récupérer mes couleurs !


Merci de votre aide.
Pablo
Admin#2 Posté le 27/12/2009 à 22:53:00
Pablodetaix,
Pour la 2eme question, permet moi de te renvoyer sur ce petit tuto pour récuperer une valeur d'une couleur d'une colorchooser :
http://gambaslinux.eg2.fr/img/colorchooser/colorchooser.ogv

Pour ta première question, j'y travaille.
A bientôt

;)
Admin#3 Posté le 27/12/2009 à 22:54:00
Pour la conversion de RGB en HSV voici une solution simple. A toi peut être de l'adapter en GB :

var_R = ( R / 255 ) //Valleur RGB de 0 à 255
var_G = ( G / 255 )
var_B = ( B / 255 )

var_Min = min( var_R, var_G, var_B ) //Valeur min de RGB
var_Max = max( var_R, var_G, var_B ) //Valeur max de RGB
del_Max = var_Max - var_Min //Différence des 2 seuils

V = var_Max

if ( del_Max == 0 ) //Si ce résultat alors on a pas de chrominance (couleur)
{
H = 0 //Le résultat de HSV est compris entre 0 et 1
S = 0
}
else //Résultat des valeurs de chrominance
{
S = del_Max / var_Max

del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max

if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R

if ( H < 0 ) ; H += 1
if ( H > 1 ) ; H -= 1
}

J'espère t'avoir aidé.
A+
;)
Admin#4 Posté le 27/12/2009 à 22:54:00
Impeccable et bravo pour ton aide sur la conversion. Le tuto est bien fait sur le colorchooser. pour le choix des couleurs
je n'ai aucun problème a ce niveau là. En principe avant de poser une question ici (j'essaye !) de lire et de fouiller un peu partout. Voilà le colorchooser fonctionne aucun pb tant que je travaillais (en test) avec drawing area. mais OpenGl allant bcp plus loin j'ai lu les tutos, la doc open gl et meme le "bouquin" Gambas_Beginner's_guide, disons que compte tenu de la puissance de gambas, et de sa structure superbe qui m'étonne toujours, je suis presque certain que l' on peut se passer d'une routine de conversion dans nos programmes. puisque les valeurs RGB HSV sont calculées et affichées dans le colorchooser. j'ai testé bcp de chose tiens a titre d'exemple
des trucs comme ired= colorchooser.ColorInfo.Red[colorchooser.Selectedcolor]
j'ai essayé une dizaine de syntaxes qui passent l'étape de de compil mais jamais l'exec.
j'ai essayé aussi de forcer la méthode "_get"
ou de passer le param "Red" "Green" etc... niet.
En tout cas un grand merci pour ton aide,
et il faudra que je prenne le temps de féliciter l'équipe qui a developpé gambas. car le produit est clair, stable
et il me semble par ma petite exp et les lectures que c'est la connaissance des finesses de syntaxe qui coince, pas l'outil lui-même. Ce qui n'est pas grave avec des échanges sur forum !
Merci Sphéris, je continue de chercher.
Admin#5 Posté le 27/12/2009 à 22:54:00
Pablo,
L'openGL est le domaine de gambas dans lequel je n'ai pas encore mis les pieds. Mais j'y compte bien.
En tout cas , tu as raison sur le fait que GB converti du HSV en RVB automatiquement.
bonne soirée

;)
Admin#6 Posté le 27/12/2009 à 22:55:00
Si ça peut aider quelqu'un en continuant sur la méthode proposée par Sphéris.
Comment passer de la valeur "entiere" de couleur de Gambas
au composantes RGB ?
voici comment j'ai fait, ça semble bien fonctionner !

icoul = ColorChooser1.SelectedColor

ired = Max(Int((f / 256) / 256), 0)

igreen = Max(Int((((f / 256) / 256) - r) * 256), 0)

iblue = Max(Int((((((f / 256) / 256) - r) * 256) - igreen) * 256), 0)

pour les couleurs "OpenGl"
on fait (en float !!)
ired / 255 ( et pareil pour les 2 autres)

Mais je ne désespère pas de trouver le moyen de lire directement les résultats internes de la fonction Gambas.

Pablo
Admin#7 Posté le 27/12/2009 à 22:55:00
Pablo,
Peut etre que tu pourrais poser la question sur la liste de diffusion. Benoit aura probablement la solution
;)
Admin#8 Posté le 27/12/2009 à 22:56:00
pour "atteindre" la liste de diffusion ?
merci.
Admin#9 Posté le 27/12/2009 à 22:56:00
Pablodetaix,
pour la mailing list,
Pose ta question en l'envoyant par mail sur cet email :
gambas-user-fr@lists.sourceforge.net
Benoit te répondra probablement.
Admin#10 Posté le 27/12/2009 à 22:56:00
Mais il faut pas être inscrit qq part pour ces mails lists ?

si j'ai une réponse, je test et je vous tiendrais tous informés, car si comme je le pense ce n'est qu'un pb de syntaxe ça ouvre des portes pour d'autres cas !

Pablo
Admin#11 Posté le 27/12/2009 à 22:57:00
On peut lire les propriétés du colorchooser


VBoxrRed.Value = Color[ColorChooser1.SelectedColor].Red

la syntaxe est donc compo_red= Color[macouleurGB].Red
ou .Green .Blue

Source = Benoit

et testé dès la réponse reçue :

Pablo
;)
1