|
发表于 2020-1-5 19:18:01
|
显示全部楼层
那好像牵涉到像素混合啊,不是你所想的那么简单,你必须先将bitmap要覆盖的那一片土地(rect)取出来保存,然后判断色深,然后混合,在draw出来,这和游戏里的alpha混合Blit很像.
伪玛:
RGB16bit 565色深
pixel_high=pixel&(1111100000011111)b//取高位
pixel_mid=pixel&(0000011111100000)b//取中位
pixel_low=pixel&(0000000000011111)b//取低位
pixel_rect类似
pixeled_high=pixel_high*alpha+pixel_rect_high(1-alpha)
pixeled_mid=pixel_mid*alpha+pixel_mid_high(1-alpha)
pixeled_low=pixel_low*alpha+pixel_low_high(1-alpha)
最后将pixeled的土draw上去就可以了
alpha是一个参数在1,0之间,设定大小可以改变透明度。
还有更优的算法,我记不住了,可以去网上查
这个算法我是从书上记下来的,还没用到实际上面去,有错就别怪我了
但是要想获得动态透明效果,不混合像素那是一定不行的!! |
|