0

这是一张图片,说明了我遇到的问题:

此图片是使用以下内容创建的:

cube.copy_area(0, 0, cube.get_width(), cube.get_height(), self.canvas, o2i[0], o2i[1])

wherecubecanvasare 的类型gtk.gdk.Pixbufo2i只是一个元组,包含一个等距放置函数的结果,该函数向后拉到前面。

我希望很明显,我遇到的问题是,在将cube具有 alpha 通道的 复制到 时canvas,该copy_area()函数还将目标 Pixbuf 中的位设置为 0 alpha。如果真的只是以偏移量将一个缓冲区流复制到另一个缓冲区流中,这是有道理copy_area()的,但这显然不是我的意图。有没有办法将一个 Pixbuf 的内容复制到另一个中,使用源 Pixbuf 的 alpha 通道作为复制蒙版?

作为参考,这里是 PyGTKcopy_area().

4

1 回答 1

1

我认为你想要的是复合()。使用起来有点不方便,因为它以不同的方式处理坐标,但是这样的事情应该使它完全像 copy_area 一样工作:

def copy_area_composite(source_buf, source_x, source_y, width, height, dest_buf, dest_x, dest_y):
    source_buf.composite(dest_buf, dest_x, dest_y, width, height, dest_x-src_x, dest_y-rect_y, 1, 1, GdkPixbuf.InterpType.NEAREST, 255)
于 2013-10-01T23:58:54.083 回答