我在尝试从精灵地图中切掉精灵时遇到问题。我可以
从左上角拿我的第一个雪碧:

gdk_pixbuf_composite( sprite_src, sprite_buf,
                      0, 0, sprite_w, sprite_h,
                      0.0, 0.0, 1.0, 1.0,
                      GDK_INTERP_HYPER,
                      255 );

但是我不能得到我的第二个雪碧
第一个:
gdk_pixbuf_composite( sprite_src, sprite_buf2,
                      sprite_w, 0, sprite_w * 2, sprite_h,
                      0.0, 0.0, 1.0, 1.0,
                      GDK_INTERP_HYPER,
                      255 );

第一个看起来不错,但是我得到了一个黑色的矩形,一个失败的
关于第二个的断言:
GdkPixbuf-CRITICAL **: gdk_pixbuf_composite: assertion 'dest_x >= 0 &&
dest_x + dest_width <= dest->width' failed

我想尽了一切办法。知道我做错了什么吗?
另外,我实际上不需要做任何缩放,但我目前不能
找到另一种方法从精灵地图中剪切精灵,除了使用
gdk_pixbuf_composite()函数。有更好的办法吗?

最佳答案

我想你的目的地pixbuf只有sprite_w宽,雪碧应该从0,0开始?在这种情况下,您还需要翻译,否则像素将复制到与原始pixbuf中相同的位置。
但真正的解决方案可能是使用gdk_pixbuf_copy_area():它似乎更接近您的需要。

08-24 13:03