关于PorterDuffXferMode效果出不来的问题
来源:互联网 发布:淘宝化妆品小样真假 编辑:程序博客网 时间:2024/05/16 02:30
在官方文档中PorterDuffXferMode的效果是这样的
然而实际上当dst和src都不是bitmap的时候,效果是这样的
所以使用PorterDuffXferMode是有条件的,条件如下
1.dst和src都是bitmap。
2.绘制的图层背景必须是透明的
结论参考自http://www.myexception.cn/mobile/2059725.html,该文章有具体的分析过程。不过经过本人实验,该文章也有不正确的地方,比如硬件加速关不关闭并不影响,bitmap大小和背景色并不影响。需要注意的应该是绘制图层应该是透明的图层。
本人是这样写的
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);
//新建一个图层,新建的图层背景是透明的 int layerId = canvas.saveLayer(0,0,canvas.getWidth(),canvas.getHeight(),null, Canvas.ALL_SAVE_FLAG); //把混合效果绘制在新的透明背景图层上
Paint paint = new Paint(); Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),R.mipmap.pink); canvas.drawBitmap(bitmap1,0,0,paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.blue); canvas.drawBitmap(bitmap,0,0,paint); paint.setXfermode(null);
//把绘制完成的图层绘制在原来的图层上 canvas.restoreToCount(layerId); }
这样便可得出正确的效果。
1 0
- 关于PorterDuffXferMode效果出不来的问题
- 关于PorterDuffXfermode的学习
- 反驳有关博客关于PorterDuffXfermode的讲解
- PorterDuffXfermode的SRC_IN使用问题总结
- PorterDuffXfermode 实现刮刮卡效果
- PorterDuffXfermode实现刮刮卡效果
- 关于自定义View的Paint、Canvas和PorterDuffXfermode的用法
- PorterDuffXfermode实现Android刮刮卡效果
- 看ApiDemos里的PorterDuffXfermode时遇到的问题
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- PorterDuffXfermode的初级使用
- PorterDuffXfermode的用法
- PorterDuffXfermode的用法
- 关于SQL SERVER中如何操作自增长ID_Identity
- java.lang.ClassNotFoundException怎么解决
- 微信获取用户信息
- Java BigDecimal详解
- AFNetWork中使用https
- 关于PorterDuffXferMode效果出不来的问题
- Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
- web项目如何获取容器中的bean对象?
- 蓝桥杯BEGIN-1(A+B)
- MFC 响应Delete按键按下的操作事件
- 移动前端使用微信js-sdk调用wx.chooseImage()时ios无法回调success方法问题所在
- 约束布局constraint-layout导入失败的解决方案
- 于学敏平面设计作品
- <a> 超链接