首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gdk_pixbuf_composite()

使用gdk_pixbuf_composite()
EN

Stack Overflow用户
提问于 2014-10-30 02:17:54
回答 2查看 129关注 0票数 1

我很难把精灵从地图上切下来。我可以从左上角得到我的第一个精灵

代码语言:javascript
复制
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 );

但是我不能得到我的第二个雪碧,也就是第一个精灵的右边:

代码语言:javascript
复制
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 );

第一个看起来很棒,但是我得到了一个黑色的矩形和第二个失败的断言:

代码语言:javascript
复制
GdkPixbuf-CRITICAL **: gdk_pixbuf_composite: assertion 'dest_x >= 0 &&
dest_x + dest_width <= dest->width' failed

我已经试过了我能想到的一切。知道我做错什么了吗?

此外,我实际上不需要进行任何缩放,但目前除了使用gdk_pixbuf_composite()函数之外,我还找不到其他方法将精灵从雪碧地图中剔除。有更好的办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-31 12:57:24

我找到了gdk_pixbuf_new_subpixbuf,这正是我所需要的,没有缩放,只有基本的雪碧斩波器功能:

代码语言:javascript
复制
gdk_pixbuf_new_subpixbuf( sprite_src, sprite_w, 0, sprite_w, sprite_h );
票数 0
EN

Stack Overflow用户

发布于 2014-10-31 09:35:41

我假设您的目标像素只有sprite_w宽度,而精灵应该从0,0开始?在这种情况下,您还需要翻译,否则像素被复制在与它们在原始像素中的位置相同的位置。

但真正的解决方案可能是使用面积():它似乎更接近您的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26643954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档