C 如何制作可缩放的GTK_图像
我想有一个窗口内显示的图像,将缩放时,用户调整窗口的大小。我尝试过使用大小分配事件,如下所示:C 如何制作可缩放的GTK_图像,c,gtk,C,Gtk,我想有一个窗口内显示的图像,将缩放时,用户调整窗口的大小。我尝试过使用大小分配事件,如下所示: 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
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);
这仅在使窗口变大时有效,但不能使其变小,因为图像已分配了大小。我可以用->宽度-100或者其他什么,但我相信有更好的方法。
另一件在我的解决方案中不起作用的事情是从最大化窗口返回。我希望它回到最大化的尺寸。现在它只是取消了窗口的最大化,但是图像仍然是相同的宽度和高度,使得窗口也与图像具有相同的宽度和高度
有人有什么好的解决办法吗?我找到了解决办法。我只是把图像放在一个滚动窗口里 滚动窗口很好。:)如果我调整窗口的大小,我不喜欢图像缩放,但是能够用鼠标滚轮缩放图像还是不错的。我只在Python中使用GTK+,但我假设您具有相同的函数。我使用
pixmap.scale\u simple()
,插值类型为gtk.gdk.INTERP\u双线性
。是的,我在scale\u图像函数中也使用gdk\u pixbuf\u scale\u simple