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 :

changer un pixel d'une image


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 75
    Par défaut changer un pixel d'une image
    Bonjour,

    Je cherche à changer la couleur d'un pixel d'une image si il est blanc. Comment récupérer la couleur du point(x,y)?

    Pour changer la couleur du pixel(x,y), je dois utiliser qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      cr = cairo_create (surface);
      cairo_set_source_rgb(cr, 0, 0, 1);// pour mettre en bleu
      cairo_rectangle (cr, x, y, 1, 1); 
      cairo_fill (cr);
    Mais que mettre pour surface pour qu'il modifie le pixel de mon image(un GtkImage contenu dans un GtkLAyout)?

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Le plus simple pour modifier un pixel est de passer par les GdkPixbuf.

    En partant de ton GtkImage tu récupères le GdkPixbuf avec la fonction gtk_image_get_pixbuf();. Ensuite tu accèdes aux pixels grâce à la fonction gdk_pixbuf_get_pixels();. Elle te retourne le pointeur sur le premier pixel de l'image. Tu disposes de toute une série de fonctions dédiées aux GdkPixbuf pour pouvoir créer/modifier une image.

    Une fois tes modifications effectuées sur le GdkPixbuf tu l'affectes à ton GtkImage grâce à la fonction gtk_image_set_from_pixbuf();.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 75
    Par défaut
    Merci ça marche pas mal du tout. Note: j'utilise gtk_image_new_from_pixbuf pour réaffecter à l'image.

    Il reste un petit souci: l'affichage des modifications ne se fait que quand la fenêtre est redessinée(minimisation/maximisation ou réaffichage après avoir changé de programme).

    Comment mettre à jour sans attendre?

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Un gtk_widget_show(); sur le widget concerné devrait résoudre le souci.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 75
    Par défaut
    Malheureusement non, en faisant gtk_widget_show(image) où image est mon GtkImage, ça ne change rien.

    En fait il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     GdkWindow *f = gtk_widget_get_window(widget);
          gdk_window_invalidate_rect(f, NULL, TRUE);
          gdk_window_process_updates(f, FALSE);
    où widget n'est pas le GtkImage mais la fenêtre qui contient l'image.

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

Discussions similaires

  1. Changer la couluer d'un pixel d'une image
    Par Julien666 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/01/2011, 17h10
  2. Changer la couleur des pixels d'une image
    Par k_meleon dans le forum VBA Access
    Réponses: 0
    Dernier message: 31/03/2008, 16h22
  3. Changer les pixels dans une image
    Par mimane_01 dans le forum Images
    Réponses: 1
    Dernier message: 15/02/2007, 13h12
  4. [FLASH 8] BitmapData -> changer des pixels d'une image en alpha
    Par Lorenzo77 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 15/12/2006, 17h13
  5. Réponses: 1
    Dernier message: 26/03/2005, 12h31

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