首页 > 解决方案 > 如何用图像填充整个窗口并允许调整窗口大小?

问题描述

我需要将图像调整为整个窗口的大小并保持缩小/调整窗口大小的选项。作为一项单独的任务,它很容易完成,但不能一起完成。我使用的示例代码是:

    myWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_title(GTK_WINDOW(myWindow), "name");
    gtk_window_set_default_size(GTK_WINDOW(myWindow), myWidth, myHeight);
    gtk_window_set_resizable(GTK_WINDOW(myWindow), TRUE);
    g_signal_connect(myWindow, "delete-event", G_CALLBACK(PrivDeleteEvent), this);
    g_signal_connect(myWindow, "destroy", G_CALLBACK(PrivOnDestroy), this);

    myImage = gtk_image_new();

    GtkWidget* container = gtk_alignment_new(0, 0, 1, 1);
    gtk_container_add(GTK_CONTAINER(myWindow), container);
    gtk_container_add(GTK_CONTAINER(container), myImage);

    g_signal_connect(myImage, "expose-event", G_CALLBACK(PrivOnImageExposeEvent), this);

    gtk_widget_show_all(myWindow);

    gtk_main();

void 
PrivSetImage()
{
    GdkPixbuf* pixbuf = gdk_pixbuf_new_from_data(...);
    gtk_image_set_from_pixbuf(GTK_IMAGE(myImage), pixbuf);
}

在图像小部件调整大小后,我调用了一些渲染内容,然后将其显示在 GtkImage 本身中。这很好用,我看到图像并且可以调整窗口大小。但是在调用 gtk_image_set_from_pixbuf 之后,我不再能够缩小窗口小于用于创建 Pixbuf 的大小。好像在里面的某个地方调用了带有 Pixbuf 尺寸的 gtk_widget_set_size_request,这会阻止窗口缩小到 pixbuf 大小。有什么建议吗?

标签: c++gtk2

解决方案


推荐阅读