Dessiner un point sur un pixmap avec GTK2 - C - Programmation
Marsh Posté le 14-04-2008 à 09:38:53
Bonjour Je souhaite dans un premier temps dessiner un point sur un pixmap, ce pixmap est inséré dans la fenêtre. VOici le code :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <malloc.h> #include <sys/types.h> #include <sys/stat.h> #include <math.h> #include <locale.h> #include <gtk/gtk.h> #include <gdk/gdk.h> #include <glib/gprintf.h> //#include "vxctools/h/vxc_typ.h" #include <stdlib.h> #include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkPixmap *dessin; GdkWindow *window1; gtk_init(&argc,&argv); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); dessin = gdk_pixmap_new(window1, 800, 600,-1); gtk_window_set_default_size(GTK_WINDOW(window1),800,600); g_signal_connect(G_OBJECT(window1), "destroy", G_CALLBACK(gtk_main_quit), NULL); // Recuperation du contexte graphique GdkGCValues *gcV; GdkGC *gc; gtk_widget_set_size_request (GTK_WIDGET (dessin), 300, 300); gc = gdk_gc_new(dessin); // Pas sur du tout : gcV = malloc(sizeof(GdkGCValues)); // Recuperation du contexte graphique gdk_gc_get_values(gc,gcV); // Dessin du point gdk_draw_point(dessin, gc, 20,20); // Ajout du dessin a la fenetre gtk_container_add (GTK_CONTAINER(window1), dessin); // Affichage de la fenetre et de son contenu gtk_widget_show_all(window1); gtk_main(); }
La fenêtre s'affiche bien mais sans le point. La console affiche ceci :
(test_dessin:11452): Gdk-CRITICAL **: gdk_pixmap_new: assertion `drawable == NULL || GDK_IS_DRAWABLE (drawable)' failed (test_dessin:11452): Gtk-CRITICAL **: gtk_widget_set_size_request: assertion `GTK_IS_WIDGET (widget)' failed (test_dessin:11452): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable != NULL' failed (test_dessin:11452): Gdk-CRITICAL **: gdk_gc_get_values: assertion `GDK_IS_GC (gc)' failed (test_dessin:11452): Gdk-CRITICAL **: gdk_draw_point: assertion `GDK_IS_DRAWABLE (drawable)' failed (test_dessin:11452): Gtk-CRITICAL **: gtk_container_add: assertion `GTK_IS_WIDGET (widget)' failed
Est-ce que j'ommet de parametrer le "pinceau"? Je ne comprends pas pourquoi il me réponds que mon window n'est pas drawable alors que je vois dans "prog linux avec GTK+" : "GdkWindow est un drawable. Merci
Make sure you enter the(*)required information where indicate.HTML code is not allowed
Marsh Posté le 14-04-2008 à 09:38:53
Bonjour
Je souhaite dans un premier temps dessiner un point sur un pixmap, ce pixmap est inséré dans la fenêtre.
VOici le code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <math.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <glib/gprintf.h>
//#include "vxctools/h/vxc_typ.h"
#include <stdlib.h>
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkPixmap *dessin;
GdkWindow *window1;
gtk_init(&argc,&argv);
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
dessin = gdk_pixmap_new(window1,
800,
600,-1);
gtk_window_set_default_size(GTK_WINDOW(window1),800,600);
g_signal_connect(G_OBJECT(window1), "destroy", G_CALLBACK(gtk_main_quit), NULL);
// Recuperation du contexte graphique
GdkGCValues *gcV;
GdkGC *gc;
gtk_widget_set_size_request (GTK_WIDGET (dessin), 300, 300);
gc = gdk_gc_new(dessin);
// Pas sur du tout :
gcV = malloc(sizeof(GdkGCValues));
// Recuperation du contexte graphique
gdk_gc_get_values(gc,gcV);
// Dessin du point
gdk_draw_point(dessin, gc, 20,20);
// Ajout du dessin a la fenetre
gtk_container_add (GTK_CONTAINER(window1), dessin);
// Affichage de la fenetre et de son contenu
gtk_widget_show_all(window1);
gtk_main();
}
La fenêtre s'affiche bien mais sans le point.
La console affiche ceci :
(test_dessin:11452): Gdk-CRITICAL **: gdk_pixmap_new: assertion `drawable == NULL || GDK_IS_DRAWABLE (drawable)' failed
(test_dessin:11452): Gtk-CRITICAL **: gtk_widget_set_size_request: assertion `GTK_IS_WIDGET (widget)' failed
(test_dessin:11452): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable != NULL' failed
(test_dessin:11452): Gdk-CRITICAL **: gdk_gc_get_values: assertion `GDK_IS_GC (gc)' failed
(test_dessin:11452): Gdk-CRITICAL **: gdk_draw_point: assertion `GDK_IS_DRAWABLE (drawable)' failed
(test_dessin:11452): Gtk-CRITICAL **: gtk_container_add: assertion `GTK_IS_WIDGET (widget)' failed
Est-ce que j'ommet de parametrer le "pinceau"?
Je ne comprends pas pourquoi il me réponds que mon window n'est pas drawable alors que je vois dans "prog linux avec GTK+" : "GdkWindow est un drawable.
Merci
Message édité par jijiz le 14-04-2008 à 09:45:55