gdk changer la couleur des lignes
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

gdk changer la couleur des lignes



  1. #1
    invitef57d092a

    gdk changer la couleur des lignes


    ------

    Bonjour,

    Je programme sous gdk et je n'arrive pas a changer la couleur des lignes.J'en ai 10 differentes a faire donc un peu de couleur c'est pratique.
    Code:
    #include <pango/pango.h>
    #include <gtk/gtk.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    void cb_expose_event (GtkWidget *, gpointer);
    
    int main (int argc, char **argv)
    {
        GtkWidget *p_main_window = NULL;
        GtkWidget *p_drawing_area = NULL;
    
        gtk_init (&argc, &argv);
        p_main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(p_main_window), 640, 480);
    
        p_drawing_area = gtk_drawing_area_new ();
        g_signal_connect (G_OBJECT (p_drawing_area), "expose_event",G_CALLBACK (cb_expose_event), NULL);
        gtk_container_add (GTK_CONTAINER (p_main_window), p_drawing_area);
        gtk_widget_show_all (p_main_window);
        gtk_main ();
        return 0;
    }
    
    void cb_expose_event (GtkWidget *p_widget, gpointer user_data)
    {
        GdkGC *gc;
        GdkPoint points[3];
        GdkPoint points2[3];
        GdkColor color;
    
        color.red=65000;
        color.green=0;
        color.blue=100;
    
    
    
    //    points = (GdkPoint*) malloc(sizeof( GdkPoint ) ) ;
    //    if ( points != NULL )
    //    {
    //        points->x=(GdkPoint *)malloc(3);
    //        points->y=(GdkPoint *)malloc(3);
    //    }
    
    //        points->x=0;
    //        points->y=0;
            points[0].x=0;
            points[0].y=0;
            points[1].x=200;
            points[1].y=200;
            points[2].x=200;
            points[2].y=300;
            points2[0].x=0;
            points2[0].y=0;
            points2[1].x=200;
            points2[1].y=300;
            points2[2].x=100;
            points2[2].y=300;
            gc=p_widget->style->fg_gc[GTK_WIDGET_STATE (p_widget)];
            gdk_gc_set_rgb_bg_color(gc,&color);
            PangoContext *p_context = NULL;
            PangoLayout *p_layout = NULL;
            p_context = gtk_widget_get_pango_context (p_widget);
            p_layout = pango_layout_new (p_context);
            pango_layout_set_text (p_layout, "Hello World !", -1);
            gdk_draw_layout (p_widget->window,p_widget->style->fg_gc[GTK_WIDGET_STATE (p_widget)],0,0,p_layout);
    //        gdk_draw_line(p_widget->window,gc,(points[0].x),(points[0].y),(points[1].x),(points[1].y));
    //        gdk_draw_line(p_widget->window,gc,0,0,200,200);
            gdk_draw_lines(p_widget->window,gc,points,3);
            gdk_draw_lines(p_widget->window,gc,points2,3);
    
    
            g_object_unref (p_layout);
    
            (void)user_data;
        }
    Merci de votre aide.

    -----

  2. #2
    inviteaa261cd4

    Re : gdk changer la couleur des lignes

    Citation Envoyé par DonGonis38 Voir le message
    Code:
       GdkColor color;
    
        color.red=65000;
        color.green=0;
        color.blue=100;
    Bonjour,
    gdk_gc_set_rgb_bg_color est appelée avec des couleurs non allouées. Ta valeur de color.pixel devrait donc être 0.
    GdkColor est une structure
    Code:
    typedef struct {
      guint32 pixel;
      guint16 red;
      guint16 green;
      guint16 blue;
    } GdkColor;
    donc n'a pas de constructeur par défaut. Il n'y a donc aucune raison pour que color.pixel soit nul par défaut.
    Code:
    GdkColor color = {0, 65000, 0, 100};
    devrait fonctionner, à moins que j'aie raté autre chose.

  3. #3
    invitef57d092a

    Re : gdk changer la couleur des lignes

    Merci, j'ai finalement trouvé la solution, je la met ca pourrait toujours servir a qq'un:

    Code:
    GdkColor colors[2];
        GdkGC *color_gc = gdk_gc_new (p_widget->window);
    
        colors[0].red = 0;
        colors[0].green = 0;
        colors[0].blue = 0;
    
        colors[1].red = 5000;
        colors[1].green = 0;
        colors[1].blue = 65000;
        gdk_colormap_alloc_color (gdk_colormap_get_system(), &colors[0], FALSE, TRUE);
        gdk_colormap_alloc_color (gdk_colormap_get_system(), &colors[1], FALSE, TRUE);
    
        gdk_gc_set_foreground (color_gc, &colors[0]);// Change la couleur
    
    // On trace ce que l'on veut en changeant de couleur.
    
    gdk_colormap_free_colors (gdk_colormap_get_system(),colors,2);
    Sais tu comment marche pango?
    J'ai reussit a écrire un texte, mais j'aimerais pouvoir le placer ou je veux. La documentation est quand meme assez unmangeable

  4. #4
    inviteaa261cd4

    Re : gdk changer la couleur des lignes

    Je ne connais pas pango. Tu as regardé la documentation de PangoLayout ?
    http://library.gnome.org/devel/pango...t-Objects.html

  5. A voir en vidéo sur Futura
  6. #5
    invitef57d092a

    Re : gdk changer la couleur des lignes

    C'est exactement cette doc qui me fait du mal
    Merci quand meme.

Discussions similaires

  1. Changer la couleur de l'eau
    Par inviteb5aa0494 dans le forum Chimie
    Réponses: 15
    Dernier message: 02/06/2012, 20h12
  2. CSS + JavaScript ; Changer la couleur des champs d'un formulaire
    Par zoup1 dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 05/07/2011, 16h17
  3. Changer la couleur de la barre des tâches
    Par inviteb678b443 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 17/01/2009, 11h20
  4. Comment changer la couleur du mercure .
    Par invite61942757 dans le forum Chimie
    Réponses: 4
    Dernier message: 14/08/2005, 13h05
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...