如何编辑转换为图像的文本?或任何其他实现/编辑文本的方法

时间:2012-11-21 02:33:55

标签: java swing text awt jtextpane

对于我的项目,我想像在Adobe Photoshop中一样调整文本大小。但是当我尝试调整(通过鼠标拖动)文本窗格时,只有文本窗格被调整大小而不是文本内部。然后我尝试将我的文本转换为图像并尝试再次调整它(如帖子How to resize text in java中提到的那样)并且它工作正常。现在我还有另一个编辑文本的问题。即,一旦我的文本转换为图像,我该如何编辑它(例如:更改文本颜色等)。

对此有什么想法吗?

2 个答案:

答案 0 :(得分:3)

  

..一旦我的文本转换为图像,我该如何编辑它(例如:更改文本颜色等)。

别。在所需的FontPointAffineTransformRenderinhHints和{{Colorimport 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()); } } ,{{1}}, 1}}(等)。

StretchLabels

{{1}}
  

..如何编辑图片中的文字?

我通常会提供控制来执行此操作:

Text Control

但当然,这不包括:

  1. Color,在主GUI中有一个控件(一个基本的绘画应用程序) Basic paint app.
  2. 通过'拖动'缩放生成的文本。这可以通过使用@trashgod或我自己(上图)所证明的可调整大小的元素来实现。

答案 1 :(得分:0)

为什么不增加文本的大小,使其随窗格一起增长,而不是将文本转换为图像?