java在圆形图像内添加文本

标签 java awt

我有那个图像:

enter image description here

而且我需要向图像添加文本,所以我想编写接收 2 个字符串并将它们添加到图像的方法,例如:

addText(String str, String str2){...};

第一个字符串的长度始终为 3 个字符 第二个字符串的长度可以是 1 到 20 个字符

addText("str", "secondstr");

结果我想收到如下所示的 base64 png 图像字符串:

enter image description here

主要问题是如何以“圆形格式”编写文本?我需要更改我编写的每个字符的 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/

相关文章:

java - 如果放置在声明之前,则静态初始化程序错误

java - AudioInput 流无法打开 .wav 文件

java - 使用 StandardCharset UTF-8 处理格式错误的异常

Java 公共(public)静态 boolean 方法

java - 将输入值设置为 JScrollBar 的值

java - 如何在 KeyListener 中调用 Graphics 方法?

java - 使用 Lambda 表达式将字符串列表转换为 Java 中的自定义对象列表

java - 单击按钮时将组件添加到窗口

java - 设置 JTable 中每行的颜色 - Java Swing

java - 如何多次创建对象以在屏幕上同时移动?