2

マウスをドラッグして好きなものをペイントする単純なペイントプログラムを作成しています。ブラシの色や大きさを変えることもできますが、このバージョンでは、ブラシの色や大きさを変えると、マウスをドラッグして描き直すと、以前に描いたものもすべて変わってしまいます。paintComponent メソッドで getGraphics メソッドを試してみましたが、役に立たなかったため、おそらく間違った方法で実行しました..この問題に対処する方法はありますか? ありがとうございました。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JPanel;

public class PaintPanel extends JPanel{
    private int pointCount = 0;
    private Point points[] = new Point[10000];
    private Color currentColor;
    private int pointSize;

    public PaintPanel(){
        setBackground(Color.WHITE);
        setDefaultColor();
        setDefaultPointSize();
        addMouseMotionListener(
                new MouseMotionAdapter() {

                    public void mouseDragged(MouseEvent event){

                        if(pointCount < points.length){
                            points[pointCount] = event.getPoint();
                            pointCount++;
                            repaint();
                        }
                    }
        }
      );

    }

    public void setColor(Color newColor){
        currentColor = newColor;
    }

    public void setDefaultColor(){
        currentColor = Color.BLACK;
    }

    public void setPointSize(int size){
        pointSize = size;
    }

    public void setDefaultPointSize(){
        pointSize = 6;
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(currentColor);
        for(int i = 0; i < pointCount; i++)
            g.fillOval(points[i].x,points[i].y,pointSize,pointSize);
    }
}

コレクションなしでそれを行うオプションはありますか?

4

1 に答える 1

2

すべてが着色されcurrentColor ています 2 つのレベルのストレージが必要です。まず、ArrayList を使用してポイントを格納します。次に、配列リストの配列リストを使用して、「曲線」を保存します。各「曲線」はその色を知っている必要があります。

于 2014-01-03T16:13:13.870 に答える