码迷,mamicode.com
首页 > 其他好文 > 详细

关于PorterDuffXferMode的用法

时间:2018-04-05 21:03:00      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:api   draw   str   res   用法   使用   之间   mode   意思   

 

 

  在了解 PorterDuffXferMode的用法之前,我们可以先看一张图片。出自API Demo,基本上所有讲PorterDuffXferMode 的文章都会使用这张图做说明。如下图所示:

      技术分享图片

 

 

这张图列举了16中PorterDuffXferMode的模式,这也就介绍了 PorterDufferXferMode的基本功能: 控制的是两个图像之间的混合显示模式。

  dst 是先画的图形        src是后画的图形

 

说一下使用的方法: 一般我们在调用canvas.drawXXX() 方法都会传入一个画笔Paint对象,Android在绘图时会先检查该画笔Paint对象没有设置Xfermode,那么直接的图形覆盖Canvas对应位置原有的像素;如果设置了Xfermode,那么按照XferMode具体的规则来更新Canvas中对应位置的像素颜色。他的算法在源码中..

  

可以看一个实例来了解一下 该东西的用法

 

 技术分享图片

 

 

效果图:

技术分享图片

 

 

 

画这个圆环的思路是: 先根据每个颜色的比例来画一个充满的圆弧,此时没有设置paint.setXfermode() 方法的,所以他是一个圆 只是有三种不同的圆弧组成。

 

再设置paint.setXfermode(new PorterDufferXfermode(mode.DST_OUT));

这个时候 再画一个内部圆 :

     canvas.drawCircle(center,center,inRadius,paint);
  这个时候图像之间的混合了   并且模式是DST_OUT 所以相同的部分去掉 就达到这样的效果

int st =canvas.saveLayer(rectF,paint);
……………………………….
canvas.restoreToCount(st);
这两句话很重要 一般没有这两句话使用PorterDufferXfermode()可能胡出现不同的结果
 
这两句画的意思是:  比如再ps上新建一个图层,最后那句话是将以前的图层与现在的图层合并在一起。
 
加了这两句话 代表我们的操作是在一个新的图层上进行的。

关于PorterDuffXferMode的用法

标签:api   draw   str   res   用法   使用   之间   mode   意思   

原文地址:https://www.cnblogs.com/xiongbo753/p/8724000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!