2014-10-10 23 views
0

我想要在窗口內顯示一個圖像,當用戶調整窗口大小時,這個圖像將會縮放。我該如何製作可縮放的GTK_IMAGE

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的東西,但我相信還有更好的方法。 在我的解決方案中不起作用的另一件事是從最大化的窗口返回。我希望它回到最大化的大小。現在它只是取消最大化窗口,但圖像的寬度和高度仍然相同,使窗口與圖像的寬度和高度相同。

有沒有人有任何好的解決方案呢?

回答

1

我找到了解決方案。我只需要將圖像放在滾動的窗口中。

+0

滾動窗口很好。 :)當我調整窗口大小時,圖像會縮放,但我不喜歡它,但能夠用鼠標的滾輪縮放圖像是很好的。我只在Python中使用GTK +,但我認爲你有相同的功能。我使用'pixmap.scale_simple()',插值類型爲'gtk.gdk.INTERP_BILINEAR'。 – 2014-10-12 11:01:18

+0

是的,我在我的scale_image函數中也使用了gdk_pixbuf_scale_simple – 2014-10-12 17:45:50

相關問題