【发布时间】:2023-04-07 07:53:01
【问题描述】:
我正在创建一个小程序,让用户使用橡皮筋效果绘制不同的形状,让用户在绘制时看到形状。我想要的是让程序绘制留在屏幕上的形状。问题是,无论鼠标在哪里,程序都会绘制一个形状。
以下面的程序为例。假设用户在点 (50,50) 处单击小程序并拖动鼠标以在 (70,70) 处绘制一个右下角的矩形。程序将在最终矩形内绘制几个矩形(即右下角位于 (54,56)、(63,61) 等处的矩形)。我只希望显示最终的矩形,同时使用橡皮筋效果。如果用户要绘制第二个矩形,当用户绘制第二个矩形时,第一个矩形将保留在屏幕上。
如何更改代码以使其正常工作?
import java.awt.Graphics;
import java.awt.event.*;
public class Test extends java.applet.Applet implements MouseListener, MouseMotionListener {
int downX, downY, dragX, dragY;
public void init() {
downX = downY = dragX = dragY = 0;
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.drawRect(downX,downY,dragX-downX,dragY-downY);
}
public void update(Graphics g) {
paint(g);
}
public void mouseClicked(MouseEvent e) {
downX = e.getX();
downY = e.getY();
}
public void mouseDragged(MouseEvent e) {
dragX = e.getX();
dragY = e.getY();
repaint();
}
public void /*Other MouseEvent methods*/ {}
}
【问题讨论】:
-
您必须保存最后绘制的内容,在其上绘制新事物,然后绘制整个事物。它的基本二维图形。你也必须对 HTML5 的画布做同样的事情。