|
|
发表于 2005-4-4 20:48:43
|
显示全部楼层
这样
再说了,你界面上一个大Button。你的图也看不到呀。而且,如果你不在DraingArea里画图,你是看不到图的。因为mainwin的默认expose处理会覆盖你的图。
- #include <gtk/gtk.h>
- static void destroy( GtkWidget *widget,
- gpointer data )
- {
- gtk_main_quit ();
- }
- static gboolean
- on_expose (GtkWidget *da,
- GdkEventExpose *event,
- gpointer data)
- {
- GdkGC *gc;
- GdkPixmap *pixmap = NULL;
- gchar *pic_name = "/work/public/pic/shuye.xpm";
- pixmap = gdk_pixmap_create_from_xpm(da->window, NULL, NULL, pic_name);
- gdk_draw_pixmap(da->window, da->style->black_gc, pixmap, 0, 0, 1, 1, 300, 200);
- gdk_draw_rectangle(da->window,
- da->style->black_gc,
- FALSE,
- 0, 0,
- 100, 99 );
- gdk_pixmap_unref(pixmap);
- }
- int main(int argc, char *argv[])
- {
- GtkWidget *mainwin;
- GtkWidget *vbox, *da;
- GtkWidget *button;
- GdkPixmap *pixmap;
- GdkWindow *gdkwindow = NULL;
- //GdkBitmap *mask;
- GdkGC *gc;
- gchar *pic_name = "/work/public/pic/shuye.xpm";
- gtk_init(&argc, &argv);
- //gtk_rc_parse("dd_rc");
- mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- g_signal_connect(G_OBJECT(mainwin), "destroy",
- G_CALLBACK(destroy), NULL);
- gtk_window_set_title(GTK_WINDOW(mainwin), "图片按钮");
- gtk_window_set_default_size(GTK_WINDOW(mainwin), 400, 300);
- gtk_window_set_position(GTK_WINDOW(mainwin), GTK_WIN_POS_CENTER);
- vbox = gtk_vbox_new (FALSE, 8);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
- gtk_container_add( GTK_CONTAINER(mainwin), vbox );
- da = gtk_drawing_area_new();
- gtk_widget_set_size_request(da, 100, 100);
- gtk_box_pack_start(GTK_BOX(vbox), da, FALSE, FALSE, 0 );
- button = gtk_button_new_with_label("hello - click me to exit");
- gtk_box_pack_start( GTK_BOX(vbox), button, TRUE, TRUE, 0 );
- g_signal_connect_swapped( G_OBJECT(button), "clicked",
- G_CALLBACK(gtk_widget_destroy),
- G_OBJECT(mainwin) );
- g_signal_connect( da, "expose_event",
- G_CALLBACK(on_expose), NULL );
- gtk_widget_show_all( mainwin );
- //pixmap = gdk_pixmap_create_from_xpm(mainwin->window, NULL, NULL, pic_name);
- gdkwindow = mainwin->window;
- if(mainwin == NULL)
- g_print("mainwin is null");
- if(gdkwindow == NULL)
- g_print("NULL");
- //gc = gdk_gc_new(mainwin->window);
- //gdk_draw_pixmap(mainwin->window, gc, pixmap, 0, 0, 0, 0, 300, 200);
- //gtk_widget_show(mainwin);
- gtk_main();
- return 0;
- }
复制代码 |
|