如何制作可扩展的GTK_IMAGE

时间:2014-10-10 14:01:38

标签: c gtk

我希望在窗口内显示一个图像,当用户调整窗口大小时,该图像会缩放。我尝试过像这样使用size-allocate事件:

static gboolean allocback(GtkWidget *w, GtkAllocation *a, char *data) {

    /* pix is a pixbuf of the full image */
    gtk_image_set_from_pixbuf(GTK_IMAGE(image), pix);
    /* scale_image just scales the pixbuf of GTK_IMAGE keeping the ratio*/
    scale_image(GTK_IMAGE(image), a->width, a->height);

    return FALSE;
}

主要:

g_signal_connect(G_OBJECT(window), "size-allocate", G_CALLBACK(allocback), NULL);

这仅在使窗口变大时起作用,但由于图像已分配大小,因此无法将其缩小。我可以使用a-> width - 100或者其他东西,但我相信有更好的方法。 在我的解决方案中无效的另一件事是从最大化窗口返回。我希望它能回到最大化的大小。现在它只是取消了窗口的最大化,但图像仍然是相同的宽度和高度,使窗口与图像的宽度和高度相同。

有没有人对此有任何好的解决方案?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我只需将图像放在滚动窗口中。