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 :

Dessiner sur une drawing area


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut Dessiner sur une drawing area
    Bonjour,
    Je souhaite , sur ma drawing area, changer la couleur d'un pixel précis.
    Mon problème est que je n'arrive pas du tout à donner la couleur souhaitée...

    Dans mon code, je créé uné couleur en lui donnant les valeurs (rouge, verte et bleue) que je souhaite, et je suis bloqué à ce point.
    Lorsque j'appelle ma fonction pour changer la couleur de mon pixel, on me demande une variable "gc" que je ne sait pas du tout comment céer.

    Il faudrait donc que je créé un "gc" à partir de ma couleur (si c'est possible ) si j'ai bien compris.

    Je crois bon de préciser que je suis obligé de travailler sur la version 1.2 de GTK.

    Merci d'avance pour votre aide !

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Fibus Voir le message
    Il faudrait donc que je créé un "gc" à partir de ma couleur (si c'est possible ) si j'ai bien compris.
    Un gc est un Graphic Context qui permet de stocker l'ensemble des paramètres de dessins dont les couleurs.

    Tu créé donc un nouveau GdkGC puis tu modifie la couleur : gdk_gc_set_foreground

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    C'est à peu près ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GdkColor *gdk_color;   //Couleur voulue
    gdk_color->red   = (guint16)(0.31*65535.0);
    gdk_color->green = (guint16)(0.75*65535.0);
    gdk_color->blue  = (guint16)(0.59*65535.0);
     
    gc = gdk_gc_new(aireP->window);   //aireP = GtkDrawingArea
    gdk_gc_set_foreground (gc, gdk_color);
    //gdk_gc_set_background (gc, gdk_color);
    Mais il ne semble pas connaitre gdk_gc_new mais seulement gdk_gc_new_with_values

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Fibus Voir le message
    C'est à peu près ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GdkColor *gdk_color;   //Couleur voulue
    gdk_color->red   = (guint16)(0.31*65535.0);
    gdk_color->green = (guint16)(0.75*65535.0);
    gdk_color->blue  = (guint16)(0.59*65535.0);
     
    gc = gdk_gc_new(aireP->window);   //aireP = GtkDrawingArea
    gdk_gc_set_foreground (gc, gdk_color);
    //gdk_gc_set_background (gc, gdk_color);
    Tu risque d'avoir quelques problèmes, il n'y a pas de mémoire allouée pour gdk_color

    Citation Envoyé par Fibus Voir le message
    Mais il ne semble pas connaitre gdk_gc_new mais seulement gdk_gc_new_with_values
    Dans les sources de la versions 1.2.9 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GdkGC*
    gdk_gc_new (GdkWindow *window)
    {
      return gdk_gc_new_with_values (window, NULL, 0);
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Ce qui veut dire? (dsl je comprends pas ce que tu veux dire )

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Fibus Voir le message
    Ce qui veut dire? (dsl je comprends pas ce que tu veux dire )
    Qu'est ce que tu n'as pas compris ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par gege2061 Voir le message
    Tu risque d'avoir quelques problèmes, il n'y a pas de mémoire allouée pour gdk_color



    Dans les sources de la versions 1.2.9 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GdkGC*
    gdk_gc_new (GdkWindow *window)
    {
      return gdk_gc_new_with_values (window, NULL, 0);
    }
    Ca^^
    C'est exactement la fonction que j'utilise...
    Faut faire une allocation spéciale de mémoire?

    Au cas ou, voici ma déclaration du gc :

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Ah je crois avoir mal lu...
    pour gdk_color, il faudrait allouer de la mémoire manuellement si j'ai bien compris?
    C'est vrai que ca me fait direct une erreur de segmentation...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    J'ai finalement modifié un ou deux trucs et ca a marché...

    Je vais donc gentillement adapter ce code au reste de mon algo et j'aurais une zolie image

    Merci pour l'aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner sur une image
    Par cquadjul dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/04/2006, 11h44
  2. Dessiner sur une image
    Par alex6891 dans le forum Java ME
    Réponses: 1
    Dernier message: 16/04/2006, 03h45
  3. [Debutant] Un thread qui dessine sur une fenetre ???
    Par Spartan03 dans le forum OpenGL
    Réponses: 6
    Dernier message: 05/04/2006, 21h19
  4. Déplacer, zoomer, dessiner (sur) une image
    Par charlito dans le forum 2D
    Réponses: 4
    Dernier message: 22/02/2006, 02h58
  5. [Servlet] [Image] Dessiner sur une image
    Par gaia_dev dans le forum 2D
    Réponses: 5
    Dernier message: 01/09/2004, 18h11

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