【发布时间】:2014-10-10 23:39:22
【问题描述】:
我希望在用户调整窗口大小时在窗口内显示图像。我尝试过像这样使用 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 或其他东西,但我相信有更好的方法。 在我的解决方案中不起作用的另一件事是从最大化窗口返回。我希望它回到最大化的大小。现在它只是取消最大化窗口,但图像仍然是相同的宽度和高度,使窗口也与图像具有相同的宽度和高度。
有人有什么好的解决办法吗?
【问题讨论】: