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 :

Récupération de la couleur d'un pixel dans une DrawingAera


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut Récupération de la couleur d'un pixel dans une DrawingAera
    Bonjour

    J'ai une DrawingAera où je trace une courbe en rouge suivant les données que j'ai transmis.
    Je la trace avec Cairomm

    Je détecte le mouvement de la souris par l'intermédiaire de la fonction virtuelle on_motion_notify_event

    J'aimerais récupérer l'image, de forme rectangulaire, du dessin autour de la souris et savoir si un pixel est rouge.
    ça me permettrait de savoir si la souris se trouve à proximité de la courbe et ainsi afficher les valeurs associées à cette courbe

    Je n'arrive pas à trouver de méthode qui fonctionne.

    Sauriez-vous m'orienter

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour,

    je te conseille de ne pas te repérer à la couleur, mais à la proximité de la courbe. Il te suffit d'utiliser un seuil, et dès que la distance entre le point et ton pointeur de souris est inférieure à ce seuil, tu considères que l'utilisateur veut afficher la valeur en ce point. Ainsi, si tu veux pouvoir afficher plusieurs courbes avec des couleurs différentes, ou changer les couleurs, ton programme pourra évoluer facilement. Et l'utilisateur ne sera pas obligé de viser un unique pixel pour obtenir une valeur.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Bonjour

    Merci de ta réponse

    J'ai bien une solution : mettre tous les points dans un vecteur et si la souris passe à proximité d'un de ces points, j'affiche les valeurs.

    Mais je trouve plus sympa de retrouver la couleur des pixels sur un rectangle de 5*5 autour du pointeur de la souris.

    A+

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Je continue à penser que c'est une mauvaise idée, mais tu fais comme tu veux.

    http://lists.cairographics.org/archi...ly/011085.html

    Mais il sera sans doute plus simple de le faire avec un pixbuf:

    http://developer.gnome.org/gdk3/stab...t-from-surface

    Tu as ensuite dans la doc de GdkPixbuf une fonction exemple put_pixel, pour toi ce sera le même esprit, il te faut faire une fontion get_pixel qui renvoie la valeur du pixel, ou is_roi_red qui va tester si ta ROI est rouge par exemple. Une ROI est une Region Of Interest, c'est le terme utilisé en traitement de l'image pour une zone de pixels notamment.

    http://developer.gnome.org/gdk-pixbu...re.description
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Merci pour les liens
    Je vais regarder tout ça

    Je pense que je vais suivre ton conseil et le faire avec un vector

    Merci et bonne soirée

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Ah, ce n'est pas mon conseil, c'est toi qui as dit que tu pourrais utiliser un vecteur... c'est aussi une mauvaise idée...
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Ton conseil de ne pas utiliser la couleur du pixel

    C'est quoi alors ta solution ?

  8. #8
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Stocker les points calculés te prendra de la mémoire pour pas grand chose. Il vaut mieux recalculer le y de ta fonction d'après le x de ton pointeur de souris. Tu peux ensuite mesurer la différence entre le y de la souris et le y calculé, et le comparer à un seuil. Tu utiliseras plus de CPU, mais moins de mémoire. Là tu travailles juste avec une projection, mais si tu veux vraiment aller au point de la courbe le plus proche (même s'il est à un x différent, il suffit de faire le calcul pour les points au voisinage de x (x-seuil et x+seuil), calculer la distance de la souris avec chacun de ces points (sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)), et prendre le point qui a la distance la plus proche. Ensuite, si tu veux éviter de recalculer des points, alors oui, un vecteur qui te servirait de cache peut être une bonne solution, mais je ne suis pas sûr que cela en vaille la peine, sauf si la courbe que tu dessines correspond à une fonction mathématique très complexe à calculer.

    De toute façon pour ce genre de choses il vaut mieux de pas raisonner en pixels, la matrice de transformation de Cairo est faire pour gérer le changement de référentiel. J'avais mis un petit exemple de programme de tracé de fonction mathématique en GTK+ et Cairo.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

Discussions similaires

  1. retrouver la couleur d'un pixel dans une image
    Par Dennis Nedry dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/12/2007, 14h00
  2. Réponses: 6
    Dernier message: 13/08/2007, 19h47
  3. Réponses: 1
    Dernier message: 02/11/2006, 09h25
  4. Récupération de la couleur d'un pixel
    Par optalix dans le forum DirectX
    Réponses: 3
    Dernier message: 05/04/2006, 18h26
  5. Coordonnées et couleur d'un pixel dans un graphe
    Par David's dans le forum Images
    Réponses: 4
    Dernier message: 04/04/2006, 15h19

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