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. パンダ3dの画面上のコントロールを描画する方法は?
- 2. Gtk +でCairoを使用して画面外の描画を行う方法は?
- 3. 2次元平面上に円を描画する方法
- 4. プログラムでホーム画面にウィジェットを表示する方法
- 5. キャンバス上にテキストを描画し、画面
- 6. Gtk - 間違ったウィジェットに対して描画イベントが発生し、再描画されないウィジェット
- 7. Android:ウィジェットをJavaで全画面表示する方法
- 8. 現在の画面の上に別の画面を表示する方法
- 9. カイロを使った描画エリア
- 10. Gdkカイロの描画楕円形
- 11. OpenGLのウィンドウでカイロの描画を高速化するには?
- 12. エミュレータの画面を越えてアンドロイドに描画する方法
- 13. iOS 10のホーム画面に表示されるウィジェットを作成する方法
- 14. 何百万ものセグメントを画面上に描画する
- 15. カイロでスライスされたイメージを描画するには?
- 16. GTK描画時に点滅する
- 17. ウィジェットを強制的に再描画する方法
- 18. ロック画面にプログラムで強制的にウィジェットを表示する方法(Android)
- 19. ARCoreを使用して平面上に線やポリラインを描画する方法
- 20. 半画面上にViewControllerを表示する方法
- 21. 画面上にポップアップセンターを表示する方法
- 22. wxPythonの基本カイロのマウスドラッグによる描画
- 23. Gtk :: Gridと同様にGtk :: 3のウィジェットを配置する方法
- 24. GTKまたはGDKを使用して直接画面に描画
- 25. 非正方形の画面上のOpenGL描画線
- 26. 許可なしに画面の上に描画できるアプリケーション
- 27. アンドロイドスタジオのホーム画面ウィジェットをクリックしてトーストメッセージを表示する方法は?
- 28. wxpythonで直接画面に描画する方法は?
- 29. Gtk +で画像を描画する最も速い方法は何ですか?
- 30. Android:画像の上に描画を実装する方法