用Java代码实现实现简单的鼠标画笔功能(仅实现鼠标拖动画线功能即可),参考Windows的“画图”程序。 思路: (1)需要有一个集合专门存储鼠标按下时产生的点的坐标,但要注意:只能存储一条连续的曲线,鼠标松开时这个List就不再存储接下来的点。 (2)不同的连续曲线存储在不同的集合,所以可能有多个集合。 (3)每次移动鼠标时,要重绘所有集合中所有的点。 (4)关闭程序时保存内存中所有List中的所有点(可使用文件)。
时间: 2024-02-12 18:06:44 浏览: 56
JAVA 鼠标画笔器功能
4星 · 用户满意度95%
以下是一个简单的Java代码实现鼠标画笔功能的示例:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MouseDraw extends JFrame implements MouseListener, MouseMotionListener {
private ArrayList<Point> currentLine;
private ArrayList<ArrayList<Point>> lines;
private Color currentColor;
private boolean mousePressed;
public MouseDraw() {
setTitle("MouseDraw");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
currentLine = new ArrayList<Point>();
lines = new ArrayList<ArrayList<Point>>();
currentColor = Color.BLACK;
mousePressed = false;
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g) {
super.paint(g);
for (ArrayList<Point> line : lines) {
int[] xPoints = new int[line.size()];
int[] yPoints = new int[line.size()];
for (int i = 0; i < line.size(); i++) {
xPoints[i] = line.get(i).x;
yPoints[i] = line.get(i).y;
}
g.setColor(currentColor);
g.drawPolyline(xPoints, yPoints, line.size());
}
}
public void mousePressed(MouseEvent e) {
if (!mousePressed) {
currentLine.add(e.getPoint());
mousePressed = true;
}
}
public void mouseReleased(MouseEvent e) {
if (mousePressed) {
lines.add(currentLine);
currentLine = new ArrayList<Point>();
mousePressed = false;
}
}
public void mouseDragged(MouseEvent e) {
if (mousePressed) {
currentLine.add(e.getPoint());
repaint();
}
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public static void main(String[] args) {
MouseDraw mouseDraw = new MouseDraw();
mouseDraw.setVisible(true);
}
}
```
这个示例使用了Java的Swing库来绘制图形界面。在程序中,我们创建了一个窗口,然后实现了MouseListener接口和MouseMotionListener接口,以便能够监听鼠标事件。我们将当前正在画的曲线存储在currentLine变量中,将所有的曲线存储在lines变量中。在鼠标按下时,我们将鼠标当前的坐标添加到currentLine中,并将mousePressed标记为true。在鼠标松开时,我们将currentLine添加到lines中,然后创建一个新的currentLine,并将mousePressed标记为false。在鼠标拖动时,我们将鼠标当前的坐标添加到currentLine中,并调用repaint()方法来重新绘制所有的曲线。在绘制时,我们遍历所有的曲线,将它们的点坐标转换成xPoints和yPoints数组,并使用drawPolyline()方法来绘制它们。
阅读全文