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 :

Gtk::DrawingArea et Gdk::Pixbuf, probleme de précision.


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Gtk::DrawingArea et Gdk::Pixbuf, probleme de précision.
    Bonjour,

    J'ai un petit problème, je souhaite afficher dans un DrawingArea une série d'image (des hexagones). Jusque là tout va bien, mais lorsque j'essaye de les positionner de façon emboitée (quinconce), les hexagones se chevauchent. Mes calculs sont corrects (détermination de l'espace entre les hexagones), mais le problème c'est que la méthode render_to_drawable de Gdk::Pixbuf ne prend en paramètre que des entiers pour positionner l'image.

    Quelqu'un aurait il une solution pour que je puisse afficher ces hexagones de façon convenable?

    Merci d'avance.

    P.S. voici le code de la boucle d'insertion des images (2 lignes de 10 hexagones, je ferai bien sur une double boucle for aprés le probleme résolu):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int i = 0 ; i < 10 ; i++){
    image->render_to_drawable(get_window(), get_style()->get_black_gc(),
    0, 0, (double)i * (xGap(w,h) + w), 0, w, h,
    Gdk::RGB_DITHER_NONE, 0, 0);
    }
     
    for (int i = 0 ; i < 10 ; i++){
    image->render_to_drawable(get_window(), get_style()->get_black_gc(),
    0, 0, ((double)i * (xGap(w,h) + w)) + xGap(w,h) + w/2.0*cos((MY_2PI)/6.0), h/2.0, w, h, Gdk::RGB_DITHER_NONE, 0, 0);
    }
    Et celui du calcul de l'espace entre les hexagones.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    return sqrt(
    pow((w/2.0)-(w/2.0)*cos(MY_2PI/6.0),2)
    +
    pow((h/2.0)*(sin(MY_2PI/6.0)),2));

    Exemple :


    Image chargée par le pixbuf:

  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
    Si tu veux une précision flottante, utilise plutôt Cairo que gdk. C'est de toute façon le mode de dessin conseillé pour GTK2, et le mode par défaut pour GTK3.
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai résolu mon probleme en simplifiant mes calculs (qui devraient réaparraitre sous peu). J'ai du faire une erreur idiote...

    Je suis trés intéressé par cairo, mais j'ai beaucoup de mal à trouver des tutoriaux simples et en français..

    Si vous connaissez des ressources de ce genre, je suis très intéréssé.


    P.S. Si vous connaissez également un moyen simple de capter les evenements d'hexagones sur une drawing area, je suis preneur! Parceque je vais me battre avec les coordonnées de la souris sinon. :p

  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
    Citation Envoyé par Forseti Voir le message
    Je suis trés intéressé par cairo, mais j'ai beaucoup de mal à trouver des tutoriaux simples et en français.
    En français, j'avais gardé de côté ce tutoriel cairo:
    http://www.dil.univ-mrs.fr/~regis/CM-CAIRO/index.html

    Il est plutôt orienté GTK2, mais la partie cairo en elle même reste identique avec GTK3 (il n'y a que la "glue" avec GDK qui disparait).

    Citation Envoyé par Forseti Voir le message
    P.S. Si vous connaissez également un moyen simple de capter les evenements d'hexagones sur une drawing area, je suis preneur! Parceque je vais me battre avec les coordonnées de la souris sinon. :p
    La doc de GtkDrawingArea indique:
    Mouse and button press signals to respond to input from the user. (Use gtk_widget_add_events() to enable events you wish to receive.)
    Si c'est pour les manipuler ensuite, peut être que passer à un canevas comme GooCanvas serait un meilleur choix.
    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. Probleme de précision
    Par Gualino dans le forum VB.NET
    Réponses: 13
    Dernier message: 16/10/2011, 00h05
  2. Des infos sur Gdk.pixbuf
    Par hervino dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 16/05/2011, 14h42
  3. Gdk::Pixbuf Comment ça marche?
    Par Krishna dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 10/05/2008, 21h03
  4. Probleme de précision
    Par gil38 dans le forum C++
    Réponses: 8
    Dernier message: 13/03/2007, 15h46
  5. [java2D] Probleme de précision de tracé
    Par olivier__ dans le forum 2D
    Réponses: 9
    Dernier message: 27/07/2005, 17h09

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