Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编辑转换为图像的文本?或任何其他实现/编辑文本的方法_Java_Swing_Text_Awt_Jtextpane - Fatal编程技术网

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

Java 如何编辑转换为图像的文本?或任何其他实现/编辑文本的方法,java,swing,text,awt,jtextpane,Java,Swing,Text,Awt,Jtextpane,对于我的项目,我想调整文本大小,就像在Adobe Photoshop中一样。但是当我尝试调整文本窗格的大小(通过鼠标拖动)时,只有文本窗格被调整大小,而不是其中的文本。然后我尝试将文本转换为图像,并尝试再次调整大小(如文章中所述),效果很好。。现在我还有一个编辑文本的问题。i、 一旦我的文本转换成图像,我该如何编辑它(例如:更改文本颜色等) 有什么想法吗?与其将文本转换为图像,不如增加文本的大小,使其随窗格一起增长 …一旦我的文本转换为图像,那么我如何编辑它(例如:更改文本颜色等) 不要。在所需

对于我的项目,我想调整文本大小,就像在Adobe Photoshop中一样。但是当我尝试调整文本窗格的大小(通过鼠标拖动)时,只有文本窗格被调整大小,而不是其中的文本。然后我尝试将文本转换为图像,并尝试再次调整大小(如文章中所述),效果很好。。现在我还有一个编辑文本的问题。i、 一旦我的文本转换成图像,我该如何编辑它(例如:更改文本颜色等)


有什么想法吗?

与其将文本转换为图像,不如增加文本的大小,使其随窗格一起增长

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

不要。在所需的
字体
、起始
仿射变换
渲染点
颜色
(等)中,在请求时使用文本绘制每个选项的图像(质量)更高,也更容易

。。如何编辑图像中的文本

我通常提供如下控件:

但当然,这并不包括:

  • 颜色,在主GUI(一个基本绘图应用程序)中有一个控件。
  • 通过“拖动”缩放结果文本。这可以通过使用一个可调整大小的元素来实现,如@trashgod或我(上面)所示

  • 只要调用
    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());
        }
    }