简单的Java绘制程序:如何在不更改先前绘制的颜色的情况下更改颜色
我正在写一个简单的绘画程序,你可以通过拖动鼠标来画任何你想要的东西。您可以更改画笔的颜色和大小,但是在这个版本中,当我更改画笔的颜色或大小时,当我通过拖动鼠标再次开始绘制时,以前绘制的所有内容也会更改。我在paintComponent方法中尝试了getGraphics方法,但我可能做得不对,因为它对我没有帮助。。如何处理这个问题有什么想法吗?多谢各位简单的Java绘制程序:如何在不更改先前绘制的颜色的情况下更改颜色,java,swing,colors,paintcomponent,mousemotionevent,Java,Swing,Colors,Paintcomponent,Mousemotionevent,我正在写一个简单的绘画程序,你可以通过拖动鼠标来画任何你想要的东西。您可以更改画笔的颜色和大小,但是在这个版本中,当我更改画笔的颜色或大小时,当我通过拖动鼠标再次开始绘制时,以前绘制的所有内容也会更改。我在paintComponent方法中尝试了getGraphics方法,但我可能做得不对,因为它对我没有帮助。。如何处理这个问题有什么想法吗?多谢各位 import java.awt.Color; import java.awt.Graphics; import java.awt.Point; i
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);
}
}
导入java.awt.Color;
导入java.awt.Graphics;
导入java.awt.Point;
导入java.awt.event.MouseEvent;
导入java.awt.event.MouseMotionAdapter;
导入javax.swing.JPanel;
公共类PaintPanel扩展了JPanel{
私有int pointCount=0;
私人点位[]=新点位[10000];
私人色彩;
私有int点大小;
公共绘画小组(){
挫折地面(颜色:白色);
setDefaultColor();
setDefaultPointSize();
addMouseMotionListener(
新的MouseMotionAdapter(){
公共无效鼠标标记(鼠标事件){
if(点计数<点长度){
points[pointCount]=事件。getPoint();
pointCount++;
重新油漆();
}
}
}
);
}
公共void setColor(颜色newColor){
currentColor=newColor;
}
公共void setDefaultColor(){
currentColor=Color.BLACK;
}
公共void setPointSize(int size){
点大小=大小;
}
public void setDefaultPointSize(){
点大小=6;
}
公共组件(图形g){
超级组件(g);
g、 设置颜色(currentColor);
对于(int i=0;i
有没有不带收藏的选项?一切都是彩色的
currentColor
您需要两级存储。首先,使用ArrayList存储点。然后使用数组列表来存储“曲线”。每条“曲线”都应该知道它的颜色