解决GTK+中IMAGE构件不能缩放的问题

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;
}

你可能感兴趣的:(解决GTK+中IMAGE构件不能缩放的问题)