java - 绘制字符串的粗边框

标签 java string draw

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

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

像这样:
Text with 2px border


提前致谢。

最佳答案

我在 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 .

关于java - 绘制字符串的粗边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679459/

相关文章:

python - networkx 在左侧和右侧绘制单独的节点 - graphviz,python

java - java中的旋转圆弧

Java 退出代码和含义

python - 在文件中查找给定单词的字谜

Java 绘制图像方法

Android:在不同的屏幕密度上绘制相同尺寸的直线或圆圈

java - 运行 Maven 项目的警告 (Spring MVC)

java - JPA JoinColumn 注解

javascript - 将字符串格式化为数组

c++ - 解析和转换非范数?