如何将当前窗口保存为png等图片文件?
我知道我可以从当前窗口获取 gdkWindow。 我什至可以得到一个图像。从这个图像结构中,我什至可以查询每个像素。但据我了解,我真正需要的是获得一个 pixbuf。
int width;
int height;
this.GetSize(width, height);
this.GdkWindow.GetImage(0,0,width,height).?
我如何从 一个 gtk 窗口或 gdk 窗口或 gdk 图像 ?
编辑
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
解决方案有效。模糊是 gnome 图像查看器的一个错误
gdk_pixbuf_get_from_drawable
从GdkWindow
到GdkPixbuf
,然后如果你想保存到文件使用gdk_pixbuf_save
.
cairo_image_surface_create
,将结果传递给cairo_create
,传递给gdk_cairo_set_source_window
,使用cairo_paint
复制到图像表面
,然后用cairo_surface_write_to_png
写下你的形象。
另请注意,您的问题类似于this one。但是,由于该问题的答案不起作用,如果我的答案回答了您的问题,我将关闭另一个问题作为一个骗局。