Canvas.drawText() 設置了alpha值卻沒有半透明效果的問題
需求:
在屏幕上畫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);
}
沒有留言 :
張貼留言