在画布上绘制透明文本

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个回答

8

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

paint.setColor(Color.argb(alpha, red, green, blue));

3
您正在通过设置颜色值来覆盖 alpha。因此,在设置颜色后设置 alpha 就可以了。
paint.setColor(textColor);
paint.setAlpha(1);

请注意,alpha的取值范围为0到255。

xml android:alpha 属性是 0 - 1f,这让我产生了误解,谢谢你帮我解决了问题。 - Jongz Puangput

3

或者只需将 alpha 值设置为颜色下方即可。


这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子 - Ansgar Wiechers
1
我曾经遇到过完全相同的问题。解决的简单方法是将透明度设置在颜色之下,而不是之上。我发布这篇文章是为了帮助那些遇到这个问题的人们。 - Xmanoux

0

设置颜色 #00112233

这里的00表示透明度

11表示红色值

22表示绿色值

33表示蓝色值

如果你在00到FF之间改变前两个数字,你可以看到透明度的变化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接