在linux下使用gtk的gdk-pixbuf实现类似windows下的透明贴图

本文介绍了一种通过XOR运算实现图片透明贴图的方法,并提供了一个具体的代码示例。该方法涉及图片A与图片B之间的XOR运算,通过创建一个黑白蒙版C来区分背景与前景,最终达到透明效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

aishen944-163.com

转贴请注明出处,谢谢!!

 

 

其实透明贴图的原理就是进行xor运算,

 

基本公式:A  xor A = 0    A xor 0 = A   A xor A xor B  = B

 

假如现在有两张图片,一张是我们要对其进行贴图的图片A, 另外一张是要被贴图的图片B

 

1, 复制图片B的一份拷贝为C

2, 将C中指定的背景色变为全白(0xffffff),其他颜色变为全黑(0x00)

3,     依次执行如下运算:

        A  xor B

        A  and C

        A  xor B

 

        对于C中的白色执行运算后的结果如下:

        ((A xor B) and 0xfffffff) xor B =  A xor B xor B =  A

 

        对于C中的黑色执行运算后的结果如下:

        ((A xor B) and 0x0000) xor B =  0 xor B = B

 

 

以下是代码实例,例子中用到的两张图片在这里:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值