1

私のプロジェクトでは、AdobePhotoshopと同じようにテキストのサイズを変更したいと思います。しかし、(マウスドラッグで)テキストペインのサイズを変更しようとすると、テキストペインのみがサイズ変更され、その中のテキストはサイズ変更されませんでした。次に、テキストを画像に変換してサイズを変更してみましたが(Javaでテキストのサイズを変更する方法の投稿で説明したように)、正常に機能しました。テキストの編集で別の問題が発生しました。つまり、テキストが画像に変換されたら、どのように編集しますか(例:テキストの色の変更など)。

これについて何か考えはありますか?

4

2 に答える 2

3

..テキストが画像に変換されたら、どのように編集すればよいですか (例: テキストの色を変更するなど)。

しないでください。Font希望する、開始PointAffineTransformRenderinhHintsおよびColor(など)で、要求されたときにテキストを使用して各選択肢の画像をペイントする方が (品質) が高く、簡単です。

ストレッチラベル

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());
    }
}

.. 画像内のテキストを編集するにはどうすればよいですか?

私は通常、次のようにコントロールを提供します。

テキスト コントロール

しかしもちろん、それはカバーしません:

  1. メイン GUI (基本的なペイント アプリ) にコントロールがあるカラー。
    基本的なペイントアプリ。
  2. 「ドラッグ」による結果のテキストのスケーリング。これは、@trashgod または私 (上記) によって示されているように、サイズ変更可能な要素を使用することで実現できます。
于 2012-11-21T03:59:59.190 に答える
0

テキストを画像に変換する代わりに、テキストのサイズを大きくして、ペインに合わせて大きくしてみませんか?

于 2012-11-21T02:44:49.960 に答える