当在C/C++中使用GDK时,我尝试在另一个GDKPIXBUF上复制一个具有透明背景的GDKPIXBUF,GDKXPIXBFFAX CopyReaRea[():
(scrol:6227):gdk pixbuf-CRITICAL**:10:41:37.084:gdk_pixbuf_copy_-area:assertion'!(gdk_pixbuf_get_has_alpha(src_pixbuf)&&!gdk_pixbuf_get_has_alpha(dest_pixbuf))'失败
如果gdk_pixbuf_copy_area()不执行此操作,则如何执行此操作?我想更改目标GdkPixbuf,而不是显示或窗口或其他什么,所以覆盖和复合似乎不是解决问题的办法。
谢谢。
最佳答案
看起来,目标GdkPixbuf没有alpha通道,而源GdkPixbuf有。这是无效的组合。
尝试将alpha通道添加到目标Pixbuf
dest_alpha = gdk_pixbuf_add_alpha(dest, false, 0, 0, 0);
在调用
gdk_pixbuf_copy_area()
以除去此断言之前。注意,这将创建一个添加了alpha通道的新pixbuf(请参见手册页gdk_pixbuf_add_alpha())