3

我正在尝试在画布上写一个半透明的文本。我看到写在画布上的字符串,但透明度似乎不起作用。这是我的代码:

     public void onDraw(Canvas canvas, Paint paint) {
    paint.setAlpha(1);
    paint.setAntiAlias(true);
    paint.setTextSize(this.textSize);
    paint.setColor(textColor);
    canvas.drawText(text,x,y,paint); 
    Logs.add("onDraw DefaultScoreGottenText currentAlpha = " + this.currentAlpha);
    showAnimation(null);
}

alpha 属性已设置,但似乎没有任何效果。我什至尝试创建一个新的 Paint 对象并将其发送到 drawText 方法。也没有用。有任何想法吗 ?

4

4 回答 4

8

paint.setColor() 包含 alpha,因此当您调用 paint.setColor(textColor) 时,您将覆盖您在 paint.setAlpha(1) 中设置的 alpha。尝试同时设置 alpha 和文本颜色:

paint.setColor(Color.argb(alpha, red, green, blue));
于 2012-05-11T19:28:21.107 回答
3

或者只是将 alpha 设置在颜色下方。

于 2014-03-12T16:13:46.450 回答
3

您正在通过设置颜色值来覆盖 alpha。所以只需在设置颜色后设置 alpha

paint.setColor(textColor);
paint.setAlpha(1);

请注意,alpha 取值介于 0 和 255 之间

于 2016-03-01T07:43:59.497 回答
0

设置颜色 #00112233

这里 00 是透明的

11是红色值

22 是绿色值

33是蓝色值

如果您将前两位数字更改为 00 到 FF 之间,您可以看到透明变化。

于 2014-01-31T04:14:36.837 回答