0

描画する必要がある線を保存して、塗りつぶしバケット ツールを作成しようとしています。その部分はうまく機能していますが、拡大縮小しようとすると、一部の線の間に描画されていない領域があるという問題に遭遇します。これを修正する方法、またはこれを行うためのより良い方法はありますか?

このコードは、私が直面している問題を示しています。最初の四角形は拡大縮小されておらず、問題ないように見えますが、2 番目のボックスを拡大縮小すると、いくつかの線の間にスペースができます。

import java.awt.*;
import javax.swing.*;


public class LineWidth extends JPanel{
    public static void main(String[] args) {
        LineWidth l = new LineWidth();
        l.setPreferredSize(new Dimension(500, 500));
        l.setBackground(Color.CYAN);

        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setContentPane(l);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g.create();

        g2.setColor(Color.BLACK);

        for(int i=10; i<110; i++) {
            g2.drawLine(10, i, 190, i);
        }

        Graphics2D g22 = (Graphics2D) g.create();
        g22.setColor(Color.BLACK);
        g22.scale(2.1, 2.1);
        for(int i=120; i<220; i++) {
            g22.drawLine(10, i, 190, i);
        }
    }
}

この例では、線の代わりに四角形を描画する方がはるかに簡単ですが、私の塗りつぶしバケットでは、それを行う方法がわかりません。

ありがとう。

4

1 に答える 1

0

線の代わりにBufferedImageそれを拡大縮小するよりも線を描くことになりました。BufferedImageこれはおそらくこれを行うための最も効率的な方法ではありませんが、かなりうまく機能し、十分に高速に実行されています。これに関する提案をありがとう。

于 2013-03-10T08:08:48.960 に答える