GTKウィンドウの外観と、それに含まれるすべてのボタンやその他のウィジェットをPNGまたはPDFファイルに保存します。カイロはそのような面での描画をサポートしています。 GTKウィジェットに何とかカイロの表面に描くように頼んでもらえますか? GTKとCairoの新人ですので、コードサンプルが大変ありがとうございます。 Pythonが私の選択言語です。カイロ表面の上にGTKウィジェットを描画する方法
11
A
答えて
10
はCでは、あなたはgtk_widget_reparent()
を使用してGtkOffscreenWindow
であなたのボタンやウィジェットを配置し、あなたがして、ファイルに保存することができますGdkPixbuf
、上にそれをレンダリングするためにgtk_offscreen_window_get_pixbuf()
を使用することができます。申し訳ありませんが、私はPythonコードを持っていませんが、私はまだオフスクリーンウィンドウがPyGTKで利用可能ではないと思います。
10
ptomatoとは何ですか? Gtk.OffscreenWindowをスクリーンから外す必要がある場合はそれを使用します。それ以外の場合はGdkウィンドウとウィジェットの割り当てを取得してクリップします。以下は、任意のウィジェットのスナップショットを取得するために使用できるスニペットです。次のコードが示すように、Gtk.Widget.draw()メソッドを使用してCairoコンテキストでレンダリングすることもできます。
from gi.repository import Gtk
import cairo
WINDOW_WIDTH, WINDOW_HEIGHT = 400, 300
window = Gtk.OffscreenWindow()
window.set_default_size(WINDOW_WIDTH, WINDOW_HEIGHT)
window.show()
canvas = Gtk.HBox()
window.add(canvas)
canvas.show()
button = Gtk.Button("Hello World!")
canvas.add(button)
button.show()
# this is needed, otherwise the screenshot is black:
while Gtk.events_pending():
Gtk.main_iteration()
surf = cairo.ImageSurface(cairo.FORMAT_ARGB32,
WINDOW_WIDTH, WINDOW_HEIGHT)
cr = cairo.Context(surf)
canvas.draw(cr)
surf.write_to_png('test.png')
(ptomatoが言ったように)あなたは一時的にスナップショットを作成するために、このGtk.OffscreenWindowにウィジェットを親にすることができます。
original_parent = canvas.get_parent()
canvas.reparent(offscreen_window)
# do snapshot
canvas.reparent(original_parent)
関連する問題
- 1. Gtk +でCairoを使用して画面外の描画を行う方法は?
- 2. 2次元平面上に円を描画する方法
- 3. プログラムでホーム画面にウィジェットを表示する方法
- 4. キャンバス上にテキストを描画し、画面
- 5. 現在の画面の上に別の画面を表示する方法
- 6. Gdkカイロの描画楕円形
- 7. エミュレータの画面を越えてアンドロイドに描画する方法
- 8. OpenGLのウィンドウでカイロの描画を高速化するには?
- 9. 何百万ものセグメントを画面上に描画する
- 10. カイロでスライスされたイメージを描画するには?
- 11. wxpythonで直接画面に描画する方法は?
- 12. GTKまたはGDKを使用して直接画面に描画
- 13. wxPythonの基本カイロのマウスドラッグによる描画
- 14. gpuから直接画面上に描画する
- 15. Gtk +で画像を描画する最も速い方法は何ですか?
- 16. ボタンアクションイベント内から画面を更新/再描画する方法
- 17. 画面のピクセルで描画する方法
- 18. VB.NETで画像を上に描画する方法
- 19. iOS上のすべてのUI要素を使って画面全体に描画する方法は?
- 20. OpenGLでQtのウィジェットを描画する
- 21. カイロの画像
- 22. 画面上のタップを防ぐ方法
- 23. Androidのゲームで画面にたくさんのビットマップを描画する方法
- 24. gtkウィジェットをgtkテキストビュー内に固定
- 25. 他のアプリケーションの上にグラフィックス/テキストを描画する方法
- 26. gtk上の任意のウィジェットの可視性の使い方は?
- 27. すべてのウィジェットからGtkテーブルを削除する方法
- 28. 画像の上に描画して図面の座標を記録する
- 29. すべてのホーム画面にAndroid Appウィジェットを表示
- 30. キャンバス上の2点間にアークを描画する方法は?