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 :

Clicked event sur une partie de dessin cairo?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut Clicked event sur une partie de dessin cairo?
    bonjour,

    Comme je débute en gtk, je ne vois quelle serait la meilleure solution pour obtenir un 'clicked event' sur chacun des cercles que je dessine avec cairo sur un drawing area ?

    1/ je dessine un background sur une drawing area avec cairo
    2/ je voudrais ensuite créer un struct contenant des donnnées (coordonnées du centre d'un cercle,etc...) puis afficher ces cercles avec cairo sur le background
    3/ il y a environ 25 cercles à afficher
    4/ pour chacun des cercles je voudrais pouvoir clicker dessus pour recupérer le cercle (la struct) émetteur du click
    5/ ensuite (j'en suis pas encore là) je voudrais relier ce cercle à une zone de texte par une ligne. Le cercle et sa zone de texte bougeront toutes les 4 secondes sur le background. Je voudrais aussi avoir un clicked event pour chaque ligne de la zone de texte (4 lignes)

    Je me pose donc bcp de questions car il n'y a pas d'event en dehors des fenetres.

    Dois-je en conclure qu'il me faut créer une fenêtre par struct et dessiner dedans le cercle et la zone de texte puis afficher la fenêtre par dessus la drawing area du background ?

    Merci d'avance pour votre aide.

  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
    Par défaut
    Bonjour,

    pour tout ce qui est dessin manuel et obtention d'événements d'interaction avec les objets dessinés, il te faut un canevas ("canvas" en anglais). Il n'y a pas de canevas "officiel" pour GTK, mais ce qui s'en rapproche le plus c'est GooCanvas.

    En revanche, tu dis aussi que certains objets doivent bouger toutes les 4 secondes... Si tu dois gérer des animations (une ou plusieurs formes qui se déplacent à une certaine vitesse d'un point à un autre), tu risques aussi d'avoir à utiliser Clutter.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut
    bonsoir,

    Merci pour tes réponses claires.

    Pas étonnant que je n'arrivais pas à voir comment faire, il faut une librairie externe à gtk3.

    J'ai regardé goocanvas, c'est tout à fait ce que je veux faire, y'a de l'event sur le graphisme vectoriel, le scale du canvas, les groupes d'items...

    Je pense utiliser g_timeout_add pour faire bouger les objets vectoriels toutes les 4 secondes. (c'est juste une translation)
    Chaque objet serait un cercle rattaché à une zone de texte par une ligne vectoriel.
    Par contre, j'aurais besoin de faire du 'drag' sur la zone de texte pour la déplacer.
    J'ai lu que le drag d'items n'était pas si facile à implémenter avec goocanvas car goocanvas ne change pas les valeurs x,y des positions mais change la matrice de transformations, il faudra donc stocker ces valeurs pour pouvoir y avoir accès à tout moment.
    Cela semble être mon seul problème mais pas insurmontable.

    En ce qui concerne clutter, ça m'a l'air d'être très puissant. (mais un peu plus compliqué peut-être et il y a moins de docs que pour goocanvas ?)
    En plus cela oblige à avoir une 'dependencie' 3d, cela alourdit non ?
    Que m'apporterait clutter en plus de goocanvas ?
    Pourrait-il résoudre le problème du drag d'objet facilement ?
    Tu disais que pour bouger plusieurs objets ça serait peut-être mieux, peux-tu m'en dire plus ?

    Merci

  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
    Par défaut
    Citation Envoyé par rollbich Voir le message
    Pas étonnant que je n'arrivais pas à voir comment faire, il faut une librairie externe à gtk3.
    Bin tu peux essayer de faire sans, mais tu vas te retrouver à redévelopper un canevas

    Citation Envoyé par rollbich Voir le message
    J'ai regardé goocanvas, c'est tout à fait ce que je veux faire, y'a de l'event sur le graphisme vectoriel, le scale du canvas, les groupes d'items...

    Je pense utiliser g_timeout_add pour faire bouger les objets vectoriels toutes les 4 secondes. (c'est juste une translation)
    Utilise plutôt g_timeout_add_seconds, ça réduit la consommation énergétique au prix d'un tout petit peu de précision.

    Citation Envoyé par rollbich Voir le message
    Chaque objet serait un cercle rattaché à une zone de texte par une ligne vectoriel.
    Par contre, j'aurais besoin de faire du 'drag' sur la zone de texte pour la déplacer.
    J'ai lu que le drag d'items n'était pas si facile à implémenter avec goocanvas car goocanvas ne change pas les valeurs x,y des positions mais change la matrice de transformations, il faudra donc stocker ces valeurs pour pouvoir y avoir accès à tout moment.
    Cela semble être mon seul problème mais pas insurmontable.
    Je n'ai pas encore utilisé goocanvas, du coup je ne peux pas vraiment te conseiller à ce niveau là...

    Citation Envoyé par rollbich Voir le message
    En ce qui concerne clutter, ça m'a l'air d'être très puissant. (mais un peu plus compliqué peut-être et il y a moins de docs que pour goocanvas ?)
    Je crois qu'il y a quand même pas mal de doc, c'est majoritairement Intel qui est à l'origine de ce projet.

    Citation Envoyé par rollbich Voir le message
    En plus cela oblige à avoir une 'dependencie' 3d, cela alourdit non ?
    Que m'apporterait clutter en plus de goocanvas ?
    Pourrait-il résoudre le problème du drag d'objet facilement ?
    Tu disais que pour bouger plusieurs objets ça serait peut-être mieux, peux-tu m'en dire plus ?
    Pour le drag, je sais pas, mais pour l'animation, clutter a un modèle scène/acteurs qui permet de gérer facilement les déplacements des widgets, la synchronisation, le nombre d'images par seconde. Si tu as juste une translation à faire, et qu'elle est instantanée, tu n'as pas besoin de Clutter. Si tu as des animations chiadées, utilise Clutter.

    Un des objectifs moyen terme de l'équipe GTK est la fusion de Clutter et GTK pour GTK 4.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut
    bonjour,

    Merci pour tes précieux conseils.

    Je vais jeter un oeil à g_timeout_add_seconds.

    Effectivement, je n'ai qu'une translation instantanée à faire pour chacun de mes 25 objets toutes les 4s donc je ne vais pas utiliser clutter pour le moment.

    J'ai regardé des démos sur youtube de clutter, ça en met plein la vue. (mais pour trouver les build windows, c'est pas facile j'ai dû cherché un peu parce que c'est quand même pas simple le tuto pour les fabriquer !)

    L'autre jour, tu me demandais quel installateur j'avais utilisé pour gtk3. Y en a-t-il un autre ? (tu as peut-être compilé toi même ?)

    bon dimanche

  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
    Par défaut
    Je connais au moins 2 installateurs GTK 3 pour Windows, mais ils sont tous non-officiels actuellement. Tarnyko essaie actuellement d'améliorer le support Windows et travaille avec les mainteneurs GTK pour faire intégrer ses modifications et rendre sa version officielle, mais il y a pas mal de boulot pour l'intégrer à l'infrastructure GNOME. Plus d'infos sur https://live.gnome.org/GTK+/Win32

    Je n'en ai pas compilé moi même, je n'ai que des machines sous Linux.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut
    bonsoir,

    J'ai installé goocanvas ainsi que clutter pour tester les deux.

    Même si je pourrais utiliser seulement goocanvas, au final, je pense que je vais utiliser clutter qui est bien plus complet :
    Il englobe un canvas et plein d'autres fonctions bien utiles utilisable à la fois en vectoriel et en bitmap.
    De plus clutter devrait être intégré à gtk4, donc je n'aurais rien de plus à apprendre.

    bonne nuit

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

Discussions similaires

  1. [Java2d] Zoom sur une partie du dessin
    Par JuFromParis dans le forum 2D
    Réponses: 0
    Dernier message: 03/08/2011, 15h35
  2. Réponses: 1
    Dernier message: 04/09/2007, 19h08
  3. tri sur une partie d'un champ
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 19/09/2005, 11h25
  4. Réponses: 5
    Dernier message: 06/09/2005, 16h01
  5. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18

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