绘制的字符串的粗边框

时间:2011-10-06 19:28:43

标签: java string draw

现在我觉得我一直在网上寻找如何在文字上添加边框,所以我决定在这里问,因为你们总是知道答案。

那么,在java中,如何在Graphics2D元素上绘制的字符串中的每个字母周围绘制约2个像素的边框?

像这样:
Text with 2px border


提前谢谢。

2 个答案:

答案 0 :(得分:7)

我在Javaworld中找到了一个简单的解决方案,用于在Java中绘制文本大纲:

g.setColor(Color.red);
g.drawString("Outline", ShiftWest(x, 1), ShiftNorth(y, 1));
g.drawString("Outline", ShiftWest(x, 1), ShiftSouth(y, 1));
g.drawString("Outline", ShiftEast(x, 1), ShiftNorth(y, 1));
g.drawString("Outline", ShiftEast(x, 1), ShiftSouth(y, 1));
g.setColor(Color.yellow);
g.drawString("Outline", x, y);

基本上,在绘制所需颜色的字符串之前,先绘制在每个方向上移动的相同字符串。这适用于一个像素轮廓,但不能很好地缩放到粗轮廓,因为如果你多次重复移动,角落可能会有间隙。

另一种解决方案是使用转换和getOutline(),它是TextLayout类的一种方法。可以找到做大纲的示例here

答案 1 :(得分:5)

请参阅:Transforming Shapes, Text, and Images。在变换示例中将“primitive”设置为“text”,将“rendering”设置为“Stroke and Fill”。