Xfermode的简易使用

都说没图说个**,那我就先上一个很多不明就里的人一直疯传的图吧。

Xfermode的简易使用_第1张图片
2677049-2beb3033e4897bd8.jpg

当然,如果你以为我接下来就要分析,那就大错特错了,因为有人已经写的挺不错的了,我也是看了他的才会的,就直接附上地址就好了。 Canvas和PorterDuffXfermode的秘密。
当然,你看完了后,就知道,这张图是“骗人”的了,但是作者只说了有做了些特殊处理,但是没说啥特殊处理,本篇文章就是来说明如何特殊处理,得到这张图的。
首先,如果看明白了的话,所谓的dst和srr中的dst是canvas当前的颜色像素,而src就是要画入的图形或者bitmap等了(drawColor试了,好像不受这个影响)。但是,起作用的是设置了Xfermode后面的操作,而原来的dst里的元素已经确定了,是无法改变的,所以,大部分出现的图是这张:
Xfermode的简易使用_第2张图片
2677049-2f71b9b058ce1a50.jpg

仔细观察就会发现,其实差别仅仅在于一个部分,就是dstOut显示的这部分,把网上疯传的那张图和dstOut这张图叠加后,就是你得到的图了。因为,在第二次画上去的 时候,作用区间只有矩形范围,其他范围是动不到的,所以,所有在矩形范围外的是都不受影响的。要影响怎么办呢,那就把区间扩大就好了。把矩形画在一个满canvas大的bitmap上即可。网上还看到有篇文章说是不是要画在bitmap才生效的,其实不然,只是画在bitmap上,才能作用到所有的canvas,仅此而已。
最后,浪费了那么多口舌,还是附上个自己写的demo吧,新手可以参考下。
git 地址:xfermodeDemo

你可能感兴趣的:(Xfermode的简易使用)