【问题标题】:How can I make scalable GTK_IMAGE如何制作可扩展的 GTK_IMAGE
【发布时间】: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 或其他东西,但我相信有更好的方法。 在我的解决方案中不起作用的另一件事是从最大化窗口返回。我希望它回到最大化的大小。现在它只是取消最大化窗口,但图像仍然是相同的宽度和高度,使窗口也与图像具有相同的宽度和高度。

有人有什么好的解决办法吗?

【问题讨论】:

    标签: c gtk


    【解决方案1】:

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

    【讨论】:

    • 滚动窗口很好。 :) 如果我调整窗口大小,我不喜欢图像缩放,但是能够用鼠标的滚轮缩放图像很好。我只在 Python 中使用 GTK+,但我假设您具有相同的功能。我使用pixmap.scale_simple(),插值类型为gtk.gdk.INTERP_BILINEAR
    • 是的,我在 scale_image 函数中也使用了 gdk_pixbuf_scale_simple
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2013-06-12
    • 2021-01-07
    • 2023-03-20
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多