2011-11-10 18 views
0

私はgtk.gdk.Pixmapのインスタンスを作成し、何かにペイントしました。例:gtk.gdk.Pixmapのサイズを変更するには

pixmap = gtk.gdk.Pixmap(widget.window,100,800) 
pixmap.draw_rectangle(gc, True, 0, 0, 100, 800) 
pixmap.draw_line(gc, 0, 0,100, 800) 

Pixmapのサイズを変更するにはどうすればよいですか?私が見る一つの方法は、gtk.gdk.Pixbuf.get_from_drawableを使用してPixBufPixmapをコピーしPixbufのサイズを変更して、Pixmap

Pixbufをコピーすることで、すべてコピーせずにこれを実行する方法はありますか?

答えて

1

残念ながら、このすべてのコピーがなければ不可能です。 GdkPixmapとGdkPixbufはCairoのために推奨されていません。

1

実際、これらは推奨されていません。

さらに重要なことに、GdkPixmapはサーバー側のリソースです。ピックスマップの内容はXサーバーのメモリにあります。 get_from_drawable()を実行すると、その内容がアプリケーションに転送されることを要求していますが、これは高価です。

代わりに、カイロ画像のサーフェスを作成し、そこで図面を作成します。これはクライアント側のリソースなので、パフォーマンスの低下を招くことはありません。イメージサーフェスは、適切な変換を使用して別のサーフェスに描画することによってスケーリングできます。

+0

涼しいですが、私は実際にコピーがサーバー - クライアント往復を含むことは知らなかった。 – plaes

関連する問題