Как заполнить все окно изображением и разрешить изменение размера окна? - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно, чтобы изображение было изменено до размера всего окна и чтобы я мог сохранить размер окна.Это отдельная задача, которую легко выполнить, но не вместе.Пример кода, который я использую:

    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.Как будто где-то внутри есть вызов gtk_widget_set_size_request с измерениями Pixbuf, который блокирует окно, чтобы уменьшить размер pixbuf.Любое предложение?

...