2011-11-10 11 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的大小?我看到的一種方式是將Pixmap複製到使用gtk.gdk.Pixbuf.get_from_drawable一個PixBuf,然後調整Pixbuf,然後複製PixbufPixmap

有沒有辦法做到這一點沒有所有的複製?

回答

1

不幸的是,沒有所有這些複製,這是不可能的。請注意,GdkPixmap和GdkPixbuf已被棄用,以支持開羅。

1

事實上,這些已被棄用。

更重要的是,GdkPixmap是一個服務器端資源 - 位圖內容位於X服務器的內存中。當您執行get_from_drawable()時,您正在要求將這些內容傳輸到您的應用程序,這很昂貴。

取而代之,創建一個開羅圖像表面,並在那裏進行繪製。這是客戶端資源,所以你不會得到那種性能損失。圖像表面可以通過適當的轉換將它們繪製到另一個表面來進行縮放。

+0

酷,我真的不知道複製涉及服務器 - 客戶端往返。 – plaes

相關問題