2014-10-30 84 views
1

我在嘗試從精靈地圖中切出精靈時遇到了問題。我可以 讓我從左上角第一個Sprite與此:使用gdk_pixbuf_composite()的精靈地圖問題

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 

我已經試過EV我能想到的東西。任何想法我做錯了什麼?

另外,我實際上並不需要做任何縮放,但我目前不能 找到另一種方法去砍精靈出一個精靈地圖,除了使用 gdk_pixbuf_composite()函數。有沒有更好的辦法?

回答

0

我發現gdk_pixbuf_new_subpixbuf,這正是我所需要的東西,不結垢,只是你的基本精靈菜刀功能:

gdk_pixbuf_new_subpixbuf(sprite_src, sprite_w, 0, sprite_w, sprite_h); 
0

我假設你的目的地pixbuf只有sprite_w寬,精靈應該從0,0開始?在這種情況下,您還需要進行翻譯,否則像素將複製到與原始pixbuf中相同的位置。

但真正的解決方案可能是使用gdk_pixbuf_copy_area():它似乎更接近你所需要的。