0

のインスタンスが作成され、その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ですか? 私が見る 1 つの方法は、を using にコピーPixmapPixBufgtk.gdk.Pixbuf.get_from_drawable次にサイズを変更してPixbufから、をにコピーするPixbufことです。Pixmap

すべてのコピーなしでこれを行う方法はありますか?

4

2 に答える 2

1

残念ながら、このすべてのコピーなしでは不可能です。GdkPixmap と GdkPixbuf は廃止され、Cairo が推奨されることに注意してください。

于 2011-11-11T07:15:07.720 に答える
1

実際、それらは非推奨です。

さらに重要なことに、GdkPixmap はサーバー側のリソースです。ピックスマップの内容は X サーバーのメモリに存在します。get_from_drawable() を実行すると、それらのコンテンツをアプリケーションに転送するように求められますが、これにはコストがかかります。

代わりに、Cairo イメージ サーフェスを作成し、そこで描画を行います。これはクライアント側のリソースであるため、パフォーマンスが低下することはありません。イメージ サーフェスは、適切な変換を使用して別のサーフェスに描画することでスケーリングできます。

于 2011-11-11T22:51:29.750 に答える