Comment convertir un TColor vers du RGB ? [C++ Builder] - Programmation
Marsh Posté le 30-07-2002 à 12:53:08
meme pas une ptite reponse... jsais bien c les vacances et l'heure de manger mais quand meme
(up deguise)
Marsh Posté le 30-07-2002 à 12:58:44
ben c pourtaint *clair* la description non ???
t'as juste un ptit peut d'arithmétique a fiare pour extraire les codes rgb de la valeur hea..
bizarre...
Marsh Posté le 30-07-2002 à 13:03:43
Heu comment te dire.... non c pas tres clair, et ca me simple pas tres correct comme methode pour simplement recuperer la couleur d'un pixel, d'autant plus qu'il me semble qu'il existait un autre moyen de faire ca mais que je ne retrouve plus.
Marsh Posté le 30-07-2002 à 13:09:27
rouge = (couleur & 0x00FF0000) << 4;
vert = (couleur & 0x0000FF00) << 2;
bleu = (couleur & 0x000000FF);
ça devrait être un truc comme ça... je pense
Marsh Posté le 30-07-2002 à 13:48:59
antp a écrit a écrit : rouge = (couleur & 0x00FF0000) << 4; vert = (couleur & 0x0000FF00) << 2; bleu = (couleur & 0x000000FF); ça devrait être un truc comme ça... je pense |
Ouais je suis pas sur, ca me semble plus que bancal ton truc, personne d'autre ne se sers de c++ builder et sais comment faire ?
Marsh Posté le 30-07-2002 à 14:19:51
ReplyMarsh Posté le 30-07-2002 à 14:26:01
antp a écrit a écrit : pourquoi bancal |
je vois pas, perso c comme ça que je fais (j'ai pas vérifié si ct juste d'un point de vu calcul, masi la méthode me parrait bonne)
Marsh Posté le 30-07-2002 à 14:29:39
*Syl* a écrit a écrit : ColorToRGB() |
Ah voila, merci c'est exactement ce que je recherchais, impossible de la retrouver cette fonction, merci beaucoup...
Au fait pendant qu'on y est, tu saurais pas comment on fait la manipulation inverse (rgb -> hexa type TColor) ???
Marsh Posté le 30-07-2002 à 15:54:08
TColor(ta valeur en RGB);
Ça te vas pas ça ? Après y'a l'histoire du poids fort qu'y n'est pas pris en compte ici mais pour ça regarde l'aide, c'est bien expliqué.
Marsh Posté le 30-07-2002 à 15:55:41
*Syl* a écrit a écrit : TColor(ta valeur en RGB); Ça te vas pas ça ? Après y'a l'histoire du poids fort qu'y n'est pas pris en compte ici mais pour ça regarde l'aide, c'est bien expliqué. |
ok je vais essayer voir, merci
Marsh Posté le 30-07-2002 à 16:21:44
*Syl* a écrit a écrit : ColorToRGB() |
arf je me disais bien que j'avais vu une fonction du genre mais je ne la trouvais plus
Marsh Posté le 30-07-2002 à 12:36:39
En fait je scan les pixels d'une image, et je veux obtenir les valeurs rgb de chacun des pixels, mais le probleme c que les pixels renvoient une valeur TColor qui est sur 4 octets, en hexadecimal....
Alors je cherche comment convertir ca en rgb mais je vois pas comment faire, ou s'il y a une autre maniere dans c++ builder de recuperer les valeurs des pixels ???
Pour infos:
enum TColor {clMin=-0x7fffffff-1, clMax=0x7fffffff};
Description
Le type TColor est utilisé pour spécifier la couleur d'un objet. Il est utilisé par la propriété Color de nombreux composants et par bien d'autres propriétés qui spécifient des valeurs de couleurs.
L'unité Graphics contient la définition de constantes TColor utiles. Ces constantes renvoient soit directement à la couleur la plus approchante dans la palette système (par exemple, clBlue renvoie au bleu), soit à la couleur de l'élément écran du système telle qu'elle est définie dans la section Couleur du Panneau de configuration Windows (par exemple, clBtnFace renvoie à la couleur système des faces de boutons).
Si vous spécifiez une valeur TColor en tant que valeur hexadécimale de 4 octets au lieu d'utiliser les constantes définies dans l'unité Graphics, les trois premiers octets représentent respectivement l'intensité RGB des couleurs bleu, vert et rouge. La valeur 00FF0000 représente un bleu pur de pleine intensité, 0000FF00, un vert pur de pleine intensité et 000000FF, un rouge pur de pleine intensité. 00000000 représente le noir et 00FFFFFF, le blanc.
Si l'octet de poids fort vaut zéro (00), la couleur obtenue est celle la plus approchante dans la palette système. Si l'octet de poids fort vaut un (01), la couleur obtenue est celle la plus approchante dans la palette actuellement réalisée. Si l'octet de poids fort vaut deux (02), la couleur obtenue est celle la plus approchante dans la palette logique du contexte de périphérique en cours.
Les tableaux suivants énumèrent les constantes de couleur de l'unité Graphics. Les deux premières colonnes sont les couleurs correspondant aux couleurs les plus proches dans la palette système, alors que les deux dernières sont les couleurs définies dans le panneau de configuration de Windows.