GtkScrolledWindow, GtkImage GtkDrawingArea GtkDrawingArea, Cairo. , GtkDrawingArea .
Python, C GTK3:
gboolean drawing_area_draw (GtkWidget *widget, cairo_t *cr, GdkPixbuf *current_image)
{
.....
pixbuf = gdk_pixbuf_scale_simple (current_image,
new_width,
new_height,
GDK_INTERP_BILINEAR);
gdk_cairo_set_source_pixbuf (cr,
pixbuf,
allocation.width/2 - new_width/2,
allocation.height/2 - new_height/2);
cairo_paint (cr);
return FALSE;
}
int main (int argc, char *argv[])
{
.....
drawing_area = gtk_drawing_area_new ();
g_signal_connect (G_OBJECT (drawing_area), "draw",
G_CALLBACK (drawing_area_draw), current_image);
.....
}
, gtk_widget_set_has_window () FALSE, , , GtkDrawingArea init.
GTK2, , , gdk_cairo_create () widget->window cairo_destroy (), .
, GTK2, GtkDrawingArea GdkWindow, GdkWindow, .