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 Discussion :

Bibliothèque de couleurs RGB en langage C


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut Bibliothèque de couleurs RGB en langage C
    bonsoir à toutes et à tous ,

    Voila tout est dans le titre je cherche une bibliotéque de couleurs RGB pour pouvoir utiliser ces couleurs .

    j'ai essayer de créer une structure et de créer les couleurs , mais ça n'a pas fonctionner .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct couleurs_s
     
    {
    int R [256];
    int G [256];
    int B [256];
    char  lacouleur;
    } Couleur_t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Couleur_t  Orange
    {
    255,  // R
    153, //  G
    32,  //  B
    "Orange" // Nom de la couleur
    };

    le code suivant doit afficher la couleur orange , mais à l'écran ce code affiche la couleur gris à l'écran .


    Merci pour vos conseils .

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct couleurs_s
    {
    int R [256];
    int G [256];
    int B [256];
    char  lacouleur;
    } Couleur_t;
    Chaque composante R,G,B est une valeur comprise entre 0 et 255, tu peux donc la stocker dans un char.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct couleurs_s
    {
      char R;
      char G;
      char B;
      char lacouleur[255];
    } Couleur_t;
    lacouleur doit être une chaîne de caractères (un tableau de char), et pas un seul char.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    bonsoir à toutes et à tous ,

    Voila tout est dans le titre je cherche une bibliotéque de couleurs RGB pour pouvoir utiliser ces couleurs .

    j'ai essayer de créer une structure et de créer les couleurs , mais ça n'a pas fonctionner .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct couleurs_s
     
    {
    int R [256];
    int G [256];
    int B [256];
    char  lacouleur;
    } Couleur_t;
    tu définis 3 tableaux de 256 entiers là. De plus tu donne un seul caractere pour la couleure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct couleurs_s
     
    {
    int R;
    int G;
    int B;
    char *lacouleur;
    } Couleur_t;
    est plus correct en oubliant pas un petit malloc pour reserver l'espace mémoire nécessaire pour la chaine de caractère. Sinon tu peux aussi utiliser des unsigned char puisque tes valeurs R G et B vont de 0 à 255.

    edit :
    trop tard. Cependant un char ne suffit pas puisqu'il est signé.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    bah tu as deja plusieurs bibliotheques toutes faites :

    gd (Thomas Boutell) (pour Gif)
    libpng (pour tous formats ppm, pnm, etc etc..)

    Tout en C...

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Merci à vous tous pour vos diverse réponses et conseils pour la géstion des couleurs RVB en C , cependant je vais changer la définition des couleurs comme conseiller c'est à dire de type int R,G,B à char R,V,B .


    Pour souviron merci de ton conseil , mais je chercher a configurer les couleurs RVB , mais je sais si la biblio dont tu parles gére les couleurs aussi ? .

    Car je n'utilise pas d'image PNG, PPM,PNM,etc... comme tu l'as dit , je chercher juste à gérer et configurer des couleurs pour pouvoir les utiliser , maintenat si tu as un d'autres liens , ils seront les bienvenus .


    Encore une fois merci pour vos interventions et vos différents conseils .

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    je vais changer la définition des couleurs comme conseiller c'est à dire de type int R,G,B à char R,V,B .
    unsigned char

    Car :
    char : -128 à 127
    unsigned char 0 à 255

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par jeremya Voir le message
    Chaque composante R,G,B est une valeur comprise entre 0 et 255, tu peux donc la stocker dans un char.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct couleurs_s
    {
      char R;
      char G;
      char B;
      char lacouleur[255];
    } Couleur_t;
    lacouleur doit être une chaîne de caractères (un tableau de char), et pas un seul char.

    Merci jeremya , j'ai en effet pris en compte tes remarques en changeant le type de données de type int à unsigned char plutot que char , mais le code ne marche pas .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct couleurs_s
    {
    unsigned   char R;
    unsigned   char G;
    unsigned   char B;
    char lacouleur[255];
    } Couleur_t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Couleur_t  BeigeClaire =
    {
    237,
    202,
    175,
    "BeigeClaire",
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    237 corréspond au composant  R .
    202 corréspond au composant  G .
    175 corréspond au composant  B .
    "BeigeClaire" corréspond à  char lacouleur[255].
    Ce code à défaut d'afficher la couleur BeigeClaire affiche tout simplement
    une couleur Verte , chose qui m'as complétement étonné sachant que tout à été convenablement configurer et déclarer comme il faut !
    C'est à dire chaque couleur R || G || B prends des données de 0 à 255 et un unsigned char est suffisament suffisant à mon avis pour stocker ces données dans un unisgned char comme conseillé par la majorité des intervenants dans ce sujet .Si d'autres membres ont d'autres idées elles seront les bienvenues .

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    Merci jeremya , j'ai en effet pris en compte tes remarques en changeant le type de données de type int à unsigned char plutot que char , mais le code ne marche pas .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct couleurs_s
    {
    unsigned   char R;
    unsigned   char G;
    unsigned   char B;
    char lacouleur[255];
    } Couleur_t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Couleur_t  BeigeClaire =
    {
    237,
    202,
    175,
    "BeigeClaire",
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    237 corréspond au composant  R .
    202 corréspond au composant  G .
    175 corréspond au composant  B .
    "BeigeClaire" corréspond à  char lacouleur[255].
    Ce code à défaut d'afficher la couleur BeigeClaire affiche tout simplement
    une couleur Verte , chose qui m'as complétement étonné sachant que tout à été convenablement configurer et déclarer comme il faut !
    C'est à dire chaque couleur R || G || B prends des données de 0 à 255 et un unsigned char est suffisament suffisant à mon avis pour stocker ces données dans un unisgned char comme conseillé par la majorité des intervenants dans ce sujet .Si d'autres membres ont d'autres idées elles seront les bienvenues .
    ben forcement...

    tu prends un "ET" sur 3 variables pouvant faire 8 bits.. Le total peut donc faire... 24....

    blanc intensite max = 255 + 255 + 255 => int

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 400
    Par défaut
    Attention, blanc ne correspond pas à 255 + 255 + 255, mais à 255*65536 + 255*256 + 255...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    bien sur, mais c'est ce que je disais en parlant d'un "ET" alors que notre ami parle d'un "OU" (j'ai bien mis 24 )

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Merci Souviron et Medinoc ,

    Voici le code que j'utilise mais le résultat est différent car à défaut d'afficher une couleur blanche , c'est une couleur Bleu Claire qui est affichée à l'écran.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    typedef struct palette_s
    {
     
    unsigned char R ;
    unsigned char G ;
    unsigned char B ;
    char *Color [256];
    } Couleur_t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Couleur_t Blanc = {
    255,
    255,
    255, 
    "Blanc"
    };

    Ce code affiche la couleur Bleu Ciel au lieu d'afficher du blanc .

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    mais c'est pas la structure le probleme, c'est comment tu t'en sers.....

  13. #13
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    mais c'est pas la structure le probleme, c'est comment tu t'en sers.....

    La réponse ne m'aide pas beaucoup encore moins m'avance à quelque chose.
    J'ai déclarer les composants R,G,B comme conseillé par la plupart des membres sur ce forum , mais le résultat est complétement différent du résultat esconté.

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ce que je veux dire c'est "comment t'en sers-tu" ???

    Peux-tu poster le code qui affecte les couleurs a un pixel en particulier ??

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Couleur_t Blanc = {
    255,
    255,
    255, 
    "Blanc"
    };
    Ce code affiche la couleur Bleu Ciel au lieu d'afficher du blanc .
    Cette structure définit bien une coubleur blanche (R=255, G=255, B=255). Le problème ne vient donc pas de la structure, mais de la manière dont tu construit un pixel à partir de cette structure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Couleur_t coul;
    unsigned int pixel = (coul.R<<16) | (coul.G<<8) | coul.B;

  16. #16
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ce que je veux dire c'est "comment t'en sers-tu" ???

    Peux-tu poster le code qui affecte les couleurs a un pixel en particulier ??

    Bien sur , je mets le code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #ifndef  COLORS_H 
    #define COLORS_H  
     
     
    typedef unsigned char  U8;
    typedef unsigned short U16;
    typedef unsigned int    U32;
     
     
     
    typedef struct couleurs_s
    {
    U8 R ;
    U8 G ;
    U8 B ;
    char *Couleur [256];
     
    } Couleur_t;
     
     
    Couleur_t Rouge = {
    210,
    0,
    105, 
    "Rouge"
    };
     
     
    Couleur_t Gris = {
    167,
    167,
    167, 
    "Gris"
    };
     
     
    Couleur_t Jaune = {
    255,
    255,
    55, 
    "Jaune"
    };
     
     
    #endif // COLORS_H

    Ensuite , si on a envie de donner une couleur à un rectangle ou une forme quelconque on prends les couleurs qu'on à définies

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FillElipse(445,300,217,299,Jaune).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    445 Hauteur  (Elipse) .
    300 Largeur  (Elipse) .
    217 Position  Verticale  (Elipse) .
    299 Position  Horizontale (Elipse) .
    Jaune c\est la couleur qu\on a définie dans la structure Couleur_s avec les composants RGB préalablement configurer .

  17. #17
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut


    oui mais ton FillEllipse, qu'est-ce qu'il fait ?? (a part remplir une elllipse )

    Je veux dire quelle instruction appelle-t-il ?? le code de cette fonction ?

  18. #18
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par souviron34 Voir le message


    oui mais ton FillEllipse, qu'est-ce qu'il fait ??
    On s'en fout un peu Souviron34 , c'est pas le but rechercher .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Je veux dire quelle instruction appelle-t-il ??
    FillElipse(445,300,217,299,Jaune)

    Utilise la couleur Jaune qui est définie dans la structure couleurs_s avec les composants R,G,B qui nous donnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Couleur_t Jaune = {
    255,
    255,
    55, 
    "Jaune"
    };
    Si on veut une elipse de couleur RougeFillElipse(445,300,217,299,Rouge)et ainsi de suite .


    La Problématique :

    Pourquoi les couleurs RGB définient ne sont pas celles qui apparraissent ?
    La quéstion réste posée .

  19. #19
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut


    ben non on s'en fout pas...

    Une routine qui accepte uniquement une chaine de caractères pour définir une couleur, elle appelle à l'intérieur quelque chose pour SETTER la couleur..

    C'est ce quelque chose qui nous manque...

    Mais si ça t'embête qu'on tente de t'aider avec le peu d'information que tu donnes, libre à toi...

  20. #20
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    Pourquoi les couleurs RGB définient ne sont pas celles qui apparraissent ?
    Comme déjà dit plus haut, sans le code de la fonction qui affiche la couleur, on ne peut pas beaucoup t'aider.
    Ton problèmeprovient de la manière dont les composantes de la structure sont transformées en couleur, puis affichées à l'écran, c'est-à-dire comment est calculé un pixel à partir des composantes RGB.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/10/2007, 14h11
  2. Couleur RGB d'1 fenêtre window
    Par Minos2 dans le forum MFC
    Réponses: 15
    Dernier message: 20/07/2007, 16h27
  3. [VBA-E]palette couleurs RGB
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 20/03/2007, 16h29
  4. [Excel]: formatter en couleurs RGB
    Par doringen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2007, 17h54
  5. Liste des couleurs RGB?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/12/2005, 16h20

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