カイロの描画を最適化したい。その上にカイロのグラフィックが描かれた不変の背景があります。背景はクラスのインスタンスごとに異なる可能性があるため、静的ファイルにすることはできません。背景を描画するには、次のようなことをしたいと思います。
if self.pixbuf is None:
self.pixbuf = self.draw_background(cr, width, height)
#self.pixbuf = gtk.gdk.pixbuf_new_from_file("/path/to/file.png")
cr.set_source_pixbuf(self.pixbuf, 0, 0)
cr.paint()
背景を一度だけ作成してから、それを画像として表示し、その上に物を描くようにします。これは、誰かが変更するたびに変更されていない背景全体を再描画する代わりに、時間を節約するためです。コメントアウトされたコード行は正常に機能しますが、png を作成して一時ファイルに保存し、そのファイルをロードしたくありません。IOの無駄のようです。
私はこれを試しました:
self draw_background (self, cr, width, height)
pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, int(width), int(height))
cr.set_source_color(gtk.gdk.color_parse('black'))
cr.set_line_width(2)
cr.rectangle(0, 0, width, height)
cr.stroke()
cr.paint()
return pixbuf
ただし、背景は表示されません。
私は何を間違っていますか?