gpt4 book ai didi

java - 简单的 Java Paint 程序 : How to change the color without changing the previous painted

转载 作者:行者123 更新时间:2023-11-30 09:13:44 26 4
gpt4 key购买 nike

我正在编写简单的画图程序,您可以在其中通过拖动鼠标来绘制任何您想要的东西。您可以更改画笔的颜色和大小,但在这个版本中,当我更改画笔的颜色或大小时,当我通过拖动鼠标再次开始绘制时,之前绘制的所有内容也会更改。我试过在 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);
}
}

有没有不使用 Collections 的选项?

最佳答案

一切都是彩色的 currentColor 您需要两级存储。首先,使用 ArrayList 来存储您的点。然后使用数组列表的数组列表来存储您的“曲线”。每条“曲线”都应该知道它的颜色。

关于java - 简单的 Java Paint 程序 : How to change the color without changing the previous painted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com