1

現在のウィンドウをpngなどの画像ファイルとして保存するにはどうすればよいですか?

現在のウィンドウから 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

解決策は機能しています。ぼやけは gnome 画像ビューアのバグでした

4

1 に答える 1

2

を使用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

また、あなたの質問はこれに似ていることに注意してください。ただし、その質問への回答は機能しないため、私の回答があなたの質問に回答する場合は、これのだまされて他の質問を閉じます。

于 2016-10-08T23:31:23.233 に答える