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+ Discussion :

changer position x,y d'une drawing area


Sujet :

GTK+

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut changer position x,y d'une drawing area
    Bonjour,

    je créer une zone de dessin avec une drawing area et par defaut la position x, y(0,0) se situe en haut a gauche.
    Donc, je voudrai changer cette position de tel sorte k l'origine se situe dans le côté gauche en bas.
    Est-ce k qq1 connait le code pour ca?

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Une simple conversion de coordonnées. Le GtkDrawingArea n'est pas modifié et ne peut pas l'être.

    Soit P'(x',y') avec P'(0,0) en bas à gauche.

    x = x';
    y = hauteur du GtkDrawingArea - y'.

    Exemple:

    Soit un GtkDRawingArea de 100x100. Soit P(x,y) dans le repère du GtkDrawingArea.

    P'(0,0) = P(0, 100-0)
    P'(0,50) = P(0, 100-50)
    P'(0,100) = P(0, 100-100);
    ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Merci, c bon j'ai réglé ca,

    et mnt je voudrai créer une échelle de couleur et l'afficher dans une drawing area.

    donc pour ca je créer des rectangles, mais j'ai seulement la couleur black_gc et white_gc.

    Est-ce kil ya d'autress couleurs et comment les utiliser? et les faire apparaittre dans mon rectangle?

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Tu peux créer toutes les couleurs dans la palette 32 bits (8 bits/couleur). Pour ca tu crées un gc perso et une couleur perso. Tu ilises insères ensuite cette couleur dans le colomap du système.Pour finir tu fixes la couleur du foreground avec ta couleur perso.

    Bon d'accord, l'explication est un peu confuse. Allé, un petit exemple pour éclaircir tout ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    GdkColormap *colormap;
    GdkGC *gc;
     
    colormap=gdk_colormap_get_system();
    gc=gdk_gc_new(drawingarea->window);  //drawingarea est le widget de dessin
     
    GdkColor couleur;  //couleur perso. Ici chaque composante R,V,B est définie sur 16 bits.
                       // A toi de mettre les valeurs que tu veux.
    couleur.red=65535;
    couleur.green=65535;
    couleur.blue=65535;
    gdk_colormap_alloc_color (colormap, &couleur, FALSE, FALSE);
    gdk_gc_set_foreground (gc, &couleur);
     
    gdk_draw_rectangle(drawingarea->window, gc, TRUE, 10, 10, 50, 50);
    ...
    g_object_unref(gc);
    Ce code se trouve dans le CallBack attaché au signal "expose-event" du drawingarea.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    enfaite la tas une seule couleur et un seul rectangle.
    si je veux creer pls rectangles avec une boucle avec differentes couleurs pour chaque rectangle, comment je fais?
    sachant aussi que ces couleurs je veux les connaitres, pas les definir au hasard?
    donc est-ce kil ya un code couleur gtk?
    et commen on ecrit en hexadecimal avec gtk?
    de plus si je veux ajouter un label a cote de chaque rectangle dans une drawing area, comment je fais?

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    L'exemple que je t'ai donné est le code pour définir une couleur quelconque utilisable par la suite sur n'importe quel "objet" dessiné dans GtkDrawingArea.
    La plupart de tes questions se situent au niveau de la programmation C et non de Gtk+ en particulier.

    Le principe général du dessin dans un GtkDrawingArea est de placer le code de dessin dans le CallBack attaché au signal "expose-event". Cette méthode est très gourmande en temps processus si tu as beaucoup de dessin à faire. Mais c'est toujours un début.

    Pour essayer tout de même de t'aiguiller un peu, il me semble que chaque rectangle doit avoir plusieurs informations attachées:
    • taille
    • position du rectangle
    • nom
    • position du nom
    • couleur du nom
    • couleur du rectangle
    • ...

    Donc commences par créer une structure qui va définir un rectangle. Ensuite, à chaque création d'un rectangle, ajoute ce rectangle dans une liste chaînée par exemple.
    Enfin, dans le CallBack d'affichage, il ne te reste plus qu'à parcourir la liste chaînée pour dessiner chaque rectangle en fonction de ses paramètres.

Discussions similaires

  1. imprimer une drawing area
    Par superZozo dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 14/01/2011, 11h33
  2. Réponses: 1
    Dernier message: 28/09/2010, 11h26
  3. Comment sauvegarder le contenu d'une drawing area ?
    Par khorhil dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 18/06/2009, 14h40
  4. Texte dans une Drawing area - Pango
    Par Bertrand_g dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 20/03/2008, 14h24
  5. Dessiner sur une drawing area
    Par Fibus dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 19/12/2007, 16h57

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