Many thanks, that works smoothly. Cheers M On 18/11/2016, cecashon@xxxxxxx <cecashon@xxxxxxx> wrote: > > I like the GTK drawing area for this sort of thing. With the drawing area > you can rescale and draw your image when the size of the window changes > automatically. > > Make sure to add a picture to the following test code. > > Eric > > > /* > gcc -Wall da_resize.c -o da_resize `pkg-config gtk+-3.0 --cflags > --libs` > Tested on Ubuntu16.04, GTK3.18. > */ > > #include<gtk/gtk.h> > > gboolean draw_picture(GtkWidget *da, cairo_t *cr, gpointer data) > { > gint width=gtk_widget_get_allocated_width(da); > gint height=gtk_widget_get_allocated_height(da); > > GdkPixbuf *temp=gdk_pixbuf_scale_simple((GdkPixbuf*)data, width, height, > GDK_INTERP_BILINEAR); > gdk_cairo_set_source_pixbuf(cr, temp, 0, 0); > cairo_paint(cr); > > g_object_unref(temp); > return FALSE; > } > int main(int argc, char *argv[]) > { > gtk_init(&argc, &argv); > > GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL); > gtk_window_set_title(GTK_WINDOW(window), "Resize Picture"); > gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); > gtk_window_set_default_size(GTK_WINDOW(window), 400, 400); > > g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); > > //Needs a valid picture. > GdkPixbuf *pixbuf=gdk_pixbuf_new_from_file("headlight_toggle1.png", > NULL); > > GtkWidget *da1=gtk_drawing_area_new(); > gtk_widget_set_hexpand(da1, TRUE); > gtk_widget_set_vexpand(da1, TRUE); > g_signal_connect(da1, "draw", G_CALLBACK(draw_picture), pixbuf); > > GtkWidget *grid=gtk_grid_new(); > gtk_grid_attach(GTK_GRID(grid), da1, 0, 0, 1, 1); > > gtk_container_add(GTK_CONTAINER(window), grid); > gtk_widget_show_all(window); > > gtk_main(); > > g_object_unref(pixbuf); > > return 0; > } > > > > > > > > _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list