paint设置颜色的问题。

  • Post author:
  • Post category:其他



http://da-en.iteye.com/blog/669661

需求:

在屏幕上画text,需要字体为蓝色,并且要有半透明效果

思路:

使用Canvas.drawText() 。

先看下面代码:

protected void onDraw(Canvas canvas) {


super.onDraw(canvas);

Paint paint = new Paint();



paint.setAlpha(0x40);

paint.setColor(Color.BLUE);



canvas.drawText(“Hello”, 0, 0, paint);

}

你认为这代码没错吧?

是的逻辑上的确没错。

可是出来的效果却没有体现出半透明。

为什么捏?

折腾了好半天,最后注意到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(0x40);和 paint.setColor(Color.BLUE);两行位置调换就ok了!

protected void onDraw(Canvas canvas) {


super.onDraw(canvas);

Paint paint = new Paint();



paint.setColor(Color.BLUE);

paint.setAlpha(0x40);



canvas.drawText(“Hello”, 0, 0, paint);

}



版权声明:本文为pinklpig原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。