我希望在窗口内显示一个图像,当用户调整窗口大小时,该图像会缩放。我尝试过像这样使用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或者其他东西,但我相信有更好的方法。 在我的解决方案中无效的另一件事是从最大化窗口返回。我希望它能回到最大化的大小。现在它只是取消了窗口的最大化,但图像仍然是相同的宽度和高度,使窗口与图像的宽度和高度相同。
有没有人对此有任何好的解决方案?
答案 0 :(得分:1)
我找到了解决方案。我只需将图像放在滚动窗口中。