Canvas.drawPath() 设置了alpha值却没有半透明效果的有关问题

在Android开发中,使用Canvas.drawPath绘制线条并设置paint的alpha值期望得到半透明效果,但实际发现线条并无半透明。原因是paint.setColor()方法的参数已包含alpha值,导致之前设置的alpha被覆盖。解决方法是调整代码顺序,先调用setColor再设置alpha。
摘要由CSDN通过智能技术生成
Canvas.drawPath() 设置了alpha值却没有半透明效果的问题 
需求: 
在屏幕上画line,需要字体为蓝色,并且要有半透明效果 
思路: 
使用Canvas.drawPath() 。 

先看下面代码: 

paintTest.setPathEffect(new CornerPathEffect(10));
   paintTest.setStrokeWidth(mPathWidth);
   paintTest.setAlpha(mPathAlpha);
   paintTest.setColor(mMosaicColor);

你认为这代码没错吧? 
是的逻辑上的确没错。 
可是出来的效果却没有体现出半透明。 

为什么捏? 
折腾了好半天,最后注意到paint.setColor()方法里的说明: 
Set the paint's color. Note that the color is an int containing alpha as well as r,g,b. 
英文好的朋友们都看懂了吧,是的setColor中传的参数是包含了alpha值的。 
因此我们等于是先设置了alpha值为0x40,然后再设回了不透明。 
当然就不会体现alpha值啦。 

正确写法,把paint.setAlpha(mPathAlpha);和 paint.setColor(mMosaicColor);两行位置调换就ok了!  

paintTest.setPathEffect(new CornerPathEffect(10));
   paintTest.setStrokeWidth(mPathWidth);
   paintTest.setColor(mMosaicColor);
   paintTest.setAlpha(mPathAlpha);
 

呵,很简单的一个问题。居然搞半天。汗。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值