GTK+自带的IMAGE构件最小只能小到图片的原始大小,不能按照构件的缩放而随之缩放图片。
可以巧用DrawingArea来实现,可以给DrawingArea的expose-event添加信号处理函数:
比如:
G_MODULE_EXPORT gboolean on_drawingarea_my_face_expose_event(GtkWidget *area, GdkEventExpose *event, gpointer data) { GdkPixbuf *src_pixbuf; GdkPixbuf *dsr_pixbuf; src_pixbuf = gdk_pixbuf_new_from_file("face.png", NULL); dsr_pixbuf = gdk_pixbuf_scale_simple(src_pixbuf, area->allocation.width, area->allocation.height, GDK_INTERP_BILINEAR); gdk_draw_pixbuf(area->window, area->style->fg_gc[GTK_WIDGET_STATE (area)], dsr_pixbuf, 0, 0, 0, 0, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); return TRUE; }