Java 如何编辑转换为图像的文本?或任何其他实现/编辑文本的方法
对于我的项目,我想调整文本大小,就像在Adobe Photoshop中一样。但是当我尝试调整文本窗格的大小(通过鼠标拖动)时,只有文本窗格被调整大小,而不是其中的文本。然后我尝试将文本转换为图像,并尝试再次调整大小(如文章中所述),效果很好。。现在我还有一个编辑文本的问题。i、 一旦我的文本转换成图像,我该如何编辑它(例如:更改文本颜色等)Java 如何编辑转换为图像的文本?或任何其他实现/编辑文本的方法,java,swing,text,awt,jtextpane,Java,Swing,Text,Awt,Jtextpane,对于我的项目,我想调整文本大小,就像在Adobe Photoshop中一样。但是当我尝试调整文本窗格的大小(通过鼠标拖动)时,只有文本窗格被调整大小,而不是其中的文本。然后我尝试将文本转换为图像,并尝试再次调整大小(如文章中所述),效果很好。。现在我还有一个编辑文本的问题。i、 一旦我的文本转换成图像,我该如何编辑它(例如:更改文本颜色等) 有什么想法吗?与其将文本转换为图像,不如增加文本的大小,使其随窗格一起增长 …一旦我的文本转换为图像,那么我如何编辑它(例如:更改文本颜色等) 不要。在所需
有什么想法吗?与其将文本转换为图像,不如增加文本的大小,使其随窗格一起增长 …一旦我的文本转换为图像,那么我如何编辑它(例如:更改文本颜色等) 不要。在所需的
字体
、起始点
、仿射变换
、渲染点
和颜色
(等)中,在请求时使用文本绘制每个选项的图像(质量)更高,也更容易
。。如何编辑图像中的文本
我通常提供如下控件:
但当然,这并不包括:
只要调用
setText()
,所引用的示例就会调用createImage()
。此站点在发布代码时给了我一些错误!!但请参考此链接()。在这里,他们正在做同样的事情。他们通过将文本“Sample”转换为图像来拉伸它。现在,您能告诉我如何编辑该文本(即,假设我想在样本转换为图像后更改其颜色)。Andrew,您能详细说明一下吗?我可能错了,但我找不到如何编辑。我想我没有足够的特权给别人的信息写评论……是的,我可以这么做。但我有一个非常罕见的要求,即只增加文本的宽度,而不增加高度。因此,我认为拉伸是一个好的选择。我不知道我是否天真,但在这种情况下,我想你可以存储原始文本并在每次更改样式属性时执行“文本到图像”转换。嗨,Andrew,上面的代码将文本转换为图像,但转换后如何编辑图像中的文本?“.编辑图像中的文本?”设置标签的文本。标签上方可能有一个静态大小的文本字段(或作为弹出窗口)编辑文本。另请参阅最新的编辑。请注意,您尝试执行的操作相当复杂,尤其是在GUI元素中,用户需要这些元素来轻松编辑字符串的字体、文本、位置、缩放比例、颜色等。到目前为止,您已经收到了很多提示和帮助,您应该及时回答这些问题前面的一些问题。
import java.awt.*;
import java.awt.geom.AffineTransform;
import javax.swing.*;
public class StretchLabels {
String s = "The quick brown fox jumps over the lazy dog!";
Font font = new Font(Font.SERIF, Font.PLAIN, 24);
public JComponent getGUI() {
JPanel gui = new JPanel(new BorderLayout());
JLabel l1 = new StretchTextLabel(s);
l1.setFont(font);
gui.add(l1, BorderLayout.CENTER);
return gui;
}
public static void main(String[] args) throws Exception {
Runnable r = new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("Streeetch me!");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
StretchLabels eg = new StretchLabels();
f.setContentPane(eg.getGUI());
f.pack();
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
class StretchTextLabel extends JLabel {
private static final long serialVersionUID = 1L;
public StretchTextLabel(String s) {
super(s);
}
@Override
public void paintComponent(Graphics gr) {
Color c = gr.getColor();
setForeground(new Color(0,0,0,0));
super.paintComponent(gr);
setForeground(c);
gr.setColor(c);
Graphics2D g = (Graphics2D)gr;
g.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
double pw = this.getPreferredSize().width;
double ph = this.getPreferredSize().height;
double w = this.getSize().width;
double h = this.getSize().height;
// Set FG (text) color
g.setColor(this.getForeground());
// stretch
AffineTransform stretch =
AffineTransform.getScaleInstance(w/pw, h/ph);
g.setTransform(stretch);
g.drawString(getText(), 0, this.getFont().getSize());
}
}