0

ここに私が抱えている問題を示す写真があります:

この画像は次のように作成されました。

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

wherecubecanvasは のタイプgtk.gdk.Pixbufです。 o2i後ろから前に描画するアイソメトリック配置関数の結果を含む単なるタプルです。

私が抱えている問題は、明らかなようにcube、アルファチャンネルを持つを にコピーするcanvas際に、copy_area()関数がコピー先の Pixbuf のビットを 0 アルファに設定することです。これは、copy_area()あるバッファ ストリームをオフセットで別のバッファ ストリームにコピーするだけであれば意味がありますが、明らかに私の意図ではありません。ソース Pixbuf のアルファ チャネルをコピー マスクとして使用して、ある Pixbuf の内容を別の Pixbuf にコピーする方法はありますか?

参考までに、の PyGTK のドキュメントを次に示しますcopy_area()

4

1 に答える 1

1

あなたが望むのはcomposite()だと思います。座標の扱いが違うのでちょっと不便ですが、以下のようにすれば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 に答える