我有那个图像:
而且我需要向图像添加文本,所以我想编写接收 2 个字符串并将它们添加到图像的方法,例如:
addText(String str, String str2){...};
第一个字符串的长度始终为 3 个字符 第二个字符串的长度可以是 1 到 20 个字符
addText("str", "secondstr");
结果我想收到如下所示的 base64 png 图像字符串:
主要问题是如何以“圆形格式”编写文本?我需要更改我编写的每个字符的 Y 坐标?
更新1: 探索链接http://www.java2s.com/Code/Java/2D-Graphics-GUI/Drawtextalongacurve.htm ,但文本总是从左侧绘制,我如何将它们移动到圆的中心?
最佳答案
重要的部分是这个:
for (int i = 0; i < length; i++) {
Point2D p = gv.getGlyphPosition(i);
double theta = (double) i / (double) (length - 1) * Math.PI / 4;
AffineTransform at = AffineTransform.getTranslateInstance(p.getX(),
p.getY());
at.rotate(theta);
这里定义了一个角度theta,并使其从0到length/length*Math.PI/4循环,所以它是从0°到45°的旋转。您需要做的是调整值 theta(也使用负数)以使其在您想要的位置开始和结束。
从您发布的图像来看,第一根弦必须从 -20° 到 20°(或从 340° 到 20°),第二根弦必须从 225° 到 135°。请注意,这些度数必须转换为弧度才能正常工作。
关于java在圆形图像内添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880253/