在Android Canvas中绘制带边框的文本

31
我想在画布中绘制类似以下内容的东西: enter image description here 如何实现边框效果?谢谢。

你尝试过这个解决方案吗?https://dev59.com/VnA75IYBdhLWcg3wqKx0 - Andreas
1个回答

64

文本需要画两次。首先使用填充颜料来绘制文本,代码如下:

Paint fillPaint = new Paint();
fillPaint.setColor(Color.MAGENTA);
canvas.drawText(.... fillPaint);

然后像这样再用描边绘制一遍:

Paint stkPaint = new Paint();
stkPaint.setStyle(Style.STROKE);
stkPaint.setStrokeWidth(8);
stkPaint.setColor(Color.WHITE);
canvas.drawText(.... stkPaint);

+1,但是先填充再在上面描边不是更好吗? - DNA
@Samuel,如果您想在黑色描边的上方添加额外的描边,您会怎么做? - Muhammad Umar
@MuhammadUmar 你可以添加任意数量的绘制通道,使用不同的笔画颜色和宽度。只需使用不同的画笔再次调用 canvas.drawText() 即可。 - Samuel
8
我看了所有答案,这个是最好的。不过我建议在drawText(... , TextPaint)之前使用 drawText(... , StrokePaint) 来绘制文本。 - murt
另外,你应该先画线条。线条的区域是在填充文本区域的周围添加的,这样填充就不会覆盖了轮廓。但是有些字符的线条还穿过了填充区域,比如“4”或“3”。 - Stevie Kideckel
1
描边应该是一半在形状外面,一半在形状里面,因此根据您的需求,您可以先绘制填充,这样描边就会完全可见。或者如果您先绘制描边,则只能看到描边的外侧一半。对于文本绘制,先绘制描边会更易读。对于其他形状,先绘制填充可能看起来更好。 - Samuel

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