IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

TObject->Color et composantes RGB [FAQ]


Sujet :

C++Builder

  1. #1
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut TObject->Color et composantes RGB
    Bonjour,

    (Borland c++ Builder 3)

    Comment faire pour r�cup�rer les composantes RGB d'un TColorDialog->Color ?

    Et vice-versa, comment, puis-je attribuer une couleur � un objet (par exemple un panel) � partir des composantes RGB de cette couleur ?

    Merci. Flo.

  2. #2
    JEG
    JEG est d�connect�
    Membre chevronn�
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par d�faut Re: TObject->Color et composantes RGB
    Citation Envoy� par Florian Sella
    Bonjour,

    Et vice-versa, comment, puis-je attribuer une couleur � un objet (par exemple un panel) � partir des composantes RGB de cette couleur ?

    Merci. Flo.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    int rouge = 255;
    int vert  = 0;
    int bleu = 0;
    Panel1->Color = RGB(rouge, vert, bleu);

  3. #3
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Merci JEG

    et pour r�cup�rer RGB � partir de la valeur de Color ?

    Ah au fait, j'ai r�ussi � faire fonctionner mon algo pour segmenter sur des zones ferm�es connexes ou pas. Pour l'instant, niveau code, c'est un peu le bazard. Je le r�arrange et je t'en fais part si �a t'int�resse toujours. (Par contre on fera pas du temps r�el avec !!! --- il est un peu lourd je pense !!! ). Pour l'instant je l'utilise comme "pot de peinture", mais je r�cup�re tous les pixels du compact, en diff�renciant les pixels-contours et les pixels internes. Faut �galement que je travaille sur le nombre d'it�rations, je cumule plusieurs fois les m�mes infos sur plusieurs it�rations.

    Flo.

  4. #4
    JEG
    JEG est d�connect�
    Membre chevronn�
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par d�faut
    pour le RGB je ne sais plus dans le sens inverse, mais c'est peut-�tre une m�thode de TColor.

    Pour l'algo, ca m'interesse toujours, si tu t'en sers juste comme pot de peinture, il y a une m�thode Fill() de ma classe TCanvas, qui te permet de remplir d'une certaine couleur tous les pixels contigus, mais ca ne fait pas de s�lection

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par d�faut
    Voici la macro RGB :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \
        ((WORD) (g) << 8)) | \
        (((DWORD) (BYTE) (b)) << 16)))

    donc pour conna�tre r, g et b :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      DWORD dwStyle = RGB(196, 255, 205);
      BYTE b = dwStyle >> 16;
      BYTE g = (dwStyle & ~(b << 16)) >> 8;
      BYTE r = dwStyle & ~(b << 16) & ~(g << "8");* 
      //*J'ai été obligé de mettre des guillemets autour du 8 sinon, à l'affichage de mon message j'ai un 8). 
      //Les guillemets sont donc à effacer dans le code réel.
     
     
      ShowMessage("r :  " + IntToStr(r) +  "\r\n" +
                  "g :  " + IntToStr(g) + "\r\n" +
                  "b :  " + IntToStr(b));
    @+

    Fr�d�ric

  6. #6
    Membre �m�rite
    Avatar de Geronimo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    156
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 156
    Par d�faut
    Tu peux aussi d�couper ton code hexad�cimal en chaine.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    AnsiString Couleur = IntToHex(color, 8);
    et ensuite, � l'aide de SubString, tu d�coupes ta chaine.
    Sache seulement que dans l'ordre tu as :


  7. #7
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Merci � vous trois pour les morceaux de codes.

    Mais j'avoue que j'ai du mal � comprendre celui de fred.
    A quel moment apparait le TObject->Color dont on veut connaitre les composante r,g,b ?

    Merci

    FLo

  8. #8
    JEG
    JEG est d�connect�
    Membre chevronn�
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par d�faut
    essaye de remplacer ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    DWORD dwStyle = RGB(196, 255, 205);
    par ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    DWORD dwStyle = bidulle->Color;

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par d�faut
    Salut,
    Merci JEG mais c'est un peu ma faute. D'o� l'importance de bien nommer ses variables : j'aurais d� appeler ma variable dwColor plut�t que dwStyle.
    @+
    Fr�d�ric

  10. #10
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Avec la petite correction de JEG, il marche � merveille ton code fred.

    Merci encore. Flo

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par d�faut
    Salut,
    Je viens de trouver aussi l'�quivalent dans les api windows avec GetRValue, GetBValue et GetGValue dont tu trouveras la d�finition dans wingdi.h :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define GetRValue(rgb)      ((BYTE)(rgb))
    #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8 ))
    #define GetBValue(rgb)      ((BYTE)((rgb)>>16))
     
    Donc :
     
    BYTE bRed = GetRValue((DWORD)MonObjet->Color);
    BYTE bGreen = GetGValue((DWORD)MonObjet->Color);
    BYTE bBlue = GetBValue((DWORD)MonObjet->Color);
    C'est encore plus simple que ce que je t'avais propos� et �a montre la vraie traduction inverse de la macro RGB.

    @+

    Fr�d�ric

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Colorer cellule par RGB
    Par flamel dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 20/08/2010, 18h29
  2. Extraction des composante RGB
    Par Devamira dans le forum Images
    R�ponses: 2
    Dernier message: 23/04/2010, 14h27
  3. [D�butant] Calcul de la moyenne des composantes RGB d'une image
    Par amalirou dans le forum Images
    R�ponses: 3
    Dernier message: 24/09/2007, 22h44
  4. [D�butant] Calcul des composantes RGB d'une video
    Par amalirou dans le forum Images
    R�ponses: 1
    Dernier message: 11/08/2007, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo