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

GTK+ avec C & C++ Discussion :

GdkGC : comment définir une couleur ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut GdkGC : comment définir une couleur ?
    Bonsoir à tous !

    J'aimerais dessiner un rectangle en rouge avec Gdk_draw_rectangle.

    Ce qui m'intéresse c'est la définition du GC, pour la couleur.

    Voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GdkGC *gc;
    GdkColor *fg;
     
    /* fg = ??????? comment définir la couleur ??? */
    gc = gdk_gc_new(pixmap);
    gdk_gc_set_foreground(gc, fg);
    ensuite je pourrais utiliser le GC dans Gdk_draw_rectangle.

    Comment définir fg (en RGB) avec les valeurs (255, 0, 0) ???
    Merci !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Salut !

    Citation Envoyé par bert_
    Comment définir fg (en RGB) avec les valeurs (255, 0, 0) ???
    En fait non, comme c'est marqué dans la documentation officielle:
    guint32 pixel; For allocated colors, the value used to draw this color on the screen.
    guint16 red; The red component of the color. This is a value between 0 and 65535, with 65535 indicating full intensitiy.
    guint16 green; The blue component of the color.
    guint16 blue; The green component of the color.
    Et on déclare ainsi:
    Et on passe alors l'adresse de la variable

    Tu peux soit définir les couleurs manuellement en dur dans le code ou laisser la possibilité à l'utilisateur de choisir la couleur de son choix en utilisant par exemple une boîte de dialogue de type GtkColorSelectiondialog puis récupérer la couleur avec la fonction gtk_color_selection_get_current_color

    En espérant avoir pû t'aider

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Pour déclarer en dure dans le programme, on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GdkColor fg;
     
    pixel.fg = 0;
    red.fg = 0xFFFF;
    green.fg = 0;
    blue.fg = 0;

    ??

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par bert_
    Pour déclarer en dure dans le programme, on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GdkColor fg;
     
    pixel.fg = 0;
    red.fg = 0xFFFF;
    green.fg = 0;
    blue.fg = 0;

    ??
    Oui bien sûr, si tu inverses red.fg et les autres ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fg.pixel = 0;
    fg.red = 0xFFFF;
    fg.green = 0;
    fg.blue = 0;


    Y'a juste pour:
    que je sais pas, moi je ne l'ai jamais modifié manuellement

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    merci mais ça me fait une erreur de segmentation ???

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      GdkGC *gc;
      GdkColor rouge;
     
      rouge.pixel = 0;
      rouge.red = 0xFFFF;
      rouge.green = 0;
      rouge.blue = 0;
     
      gc = gdk_gc_new(temp->pixmap);
      gdk_gc_set_foreground(gc, &rouge);

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Essaye de passer l'argument de la fonction gdk_gc_new de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gc = gdk_gc_new(GDK_DRAWABLE (temp->pixmap));
    Tu as surement pas bien réglé ton compilateur alors il ne parle pas beaucoup avec toi

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    En fait l'erreur de segmentation ne vient pas de là...

    Par contre, impossiblie de faire du rouge.... pourtant les valeurs sont correctes, non ?

    Comment faire pour changer l'épaisseur du trait ?

    Merci.

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par bert_
    Par contre, impossiblie de faire du rouge.... pourtant les valeurs sont correctes, non ?
    Peut-être est-ce à cause de ca:
    Essaye de na pas définir cette valeur en mettant cette instruction en commentaire

    Citation Envoyé par bert_
    Comment faire pour changer l'épaisseur du trait ?
    Ca j'en sais rien, je n'ai à vrai dire pas encore utilisé ces fonctions

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Franck.H
    Tu as surement pas bien réglé ton compilateur alors il ne parle pas beaucoup avec toi
    Comment faire pour régler mon compilateur (gcc) pout qu'il me parle ? J'ai des erreurs de segmentation mais pas tout le temps, c'est un bizarre, si mon compilateur adoré pouvait m'aidé !!!


    Merci !!

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par bert_
    Comment faire pour régler mon compilateur (gcc) pout qu'il me parle ? J'ai des erreurs de segmentation mais pas tout le temps, c'est un bizarre, si mon compilateur adoré pouvait m'aidé !!!


    Merci !!
    Tu peux ajouter au minimum les options:

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Franck.H
    Tu peux ajouter au minimum les options:

    Merci !!

    J'ai trouvé deux erreurs de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: format ‘%d’ expects type ‘int *’, but argument 3 has type ‘guint *’
    Ce qui est étonnant c'est qu'il ne détecte pas d'erreur pour d'autres fonctions fscanf, ou fprintf qui utilise des guint et des gchar...

    Tu crois que ça peut provoquer des erreurs de segmentations ?

    Sinon j'ai aussi des paramètres de fonctions "unused" mais ça ne doit pas être grave !!

    J'ai lu quelque part sur ce forum que les fonctions fopen et fclose pouvait planter et qu'il fallait les tester, ça peut venir de là ??


    Re-Merci !!!

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bin normal qu'il n'est pas content, si tu utilise un guint à la place d'un int, ca va pas le faire, un guint est en fait un unsigned int donc tu peux utiliser le type gint

    Citation Envoyé par bert_
    Sinon j'ai aussi des paramètres de fonctions "unused" mais ça ne doit pas être grave !!
    A la rigueur, à la fin de la fonction tu peux faire:
    Il ne réclamera plus pour les variables non utilisées

Discussions similaires

  1. Comment définir une couleur RGB pour composant TForm
    Par kressano dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/09/2009, 17h18
  2. Comment donne une couleur a une ligne dans un DBGrid
    Par samy84s dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/09/2005, 23h22
  3. Comment obtenir une couleur clignotante dans un TStringGrid ?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2005, 00h46
  4. Comment comment définir une clef primaire dans une table??
    Par nek_kro_kvlt dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/02/2005, 21h06
  5. Réponses: 8
    Dernier message: 20/12/2004, 15h14

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