使用gtk将当前窗口保存为图像#
问题描述:
如何将当前窗口保存为图像文件,如png?使用gtk将当前窗口保存为图像#
我知道我可以从当前窗口获取gdkWindow。 我甚至可以得到一个图像。从这个图像结构我甚至可以查询每个像素。但根据我的理解,我真正需要的是获得pixbuf。
int width;
int height;
this.GetSize(width, height);
this.GdkWindow.GetImage(0,0,width,height).?
我如何从一个 GTK窗口或 一个GDK窗口或 一个GDK图像的pixbuf?
编辑
int width;
int height;
this.GetSize(out width, out height);
Pixbuf pixbuf = Pixbuf.FromDrawable (this.GdkWindow, this.Colormap, 0, 0, 0, 0, width, height);
pixbuf.Save("/tmp/out.png","png");
是有点儿工作。一个PNG导出的大小正确但模糊。
编辑2
该解决方案正在工作。该bluriness是侏儒的图像浏览器的漏洞
答
使用gdk_pixbuf_get_from_drawable
如果你想保存到文件中使用gdk_pixbuf_save
从GdkWindow
得到一个GdkPixbuf
,然后。
在开罗,这是更面向未来的方法,你可以使用cairo_image_surface_create
,将结果传递给cairo_create
,传递到gdk_cairo_set_source_window
,复制到你的图像表面cairo_paint
,并与cairo_surface_write_to_png
写你的形象。
另请注意,您的问题与this one类似。然而,由于这个问题的答案不起作用,如果我的答案回答你的问题,我会把另一个问题作为这个问题的一个补充。
你使用的是GTK + 2还是3? – oldtechaa
我会说2作为gtk-sharp版本是2.12.0.0 – frenchone