Простая программа Java Paint: Как изменить цвет, не меняя предыдущий нарисованный
Я пишу простую программу рисования, где вы рисуете, что вы хотите, перетаскивая мышь. Вы можете изменить цвет и размер кисти, но в этой версии, когда я изменяю цвет или размер кисти, все, что было нарисовано до этого, тоже меняется, когда я снова начинаю рисовать, перетаскивая мышь. Я пытался с помощью метода getGraphics в методе paintComponent, но я, вероятно, сделал это неправильно, потому что это не помогло мне. Есть идеи, как решить эту проблему? Спасибо.
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);
}
}
Любой вариант сделать это без коллекций?
1 ответ
Все покрашено currentColor
Вам нужно два уровня хранения. Прежде всего, используйте ArrayList для хранения ваших очков. Затем используйте список массивов списков массивов для хранения ваших "кривых". Каждая "кривая" должна знать свой цвет.