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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 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 .

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    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

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    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 )

  7. #7
    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é.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    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...

  9. #9
    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 .

  10. #10
    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

  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 : 67
    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 : 67
    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 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 .

  16. #16
    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;

Discussions similaires

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

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