Java 小程序绘制多个形状而不是一个
我正在创建一个小程序,让用户使用橡皮筋效果绘制不同的形状,让用户在绘制形状时看到它。我想要的是程序绘制留在屏幕上的形状。问题是程序在鼠标所在的位置绘制形状 以下面的程序为例。假设用户在点50,50处单击小程序并拖动鼠标以绘制右下角为70,70的矩形。程序将在最终矩形内绘制多个矩形,即右下角位于54、56、63、61等的矩形。。我只想显示最后的矩形,但也同时使用橡皮筋效果。如果用户绘制第二个矩形,第一个矩形将保留在屏幕上,而用户绘制第二个矩形 我如何修改代码以使其工作Java 小程序绘制多个形状而不是一个,java,applet,drawing,Java,Applet,Drawing,我正在创建一个小程序,让用户使用橡皮筋效果绘制不同的形状,让用户在绘制形状时看到它。我想要的是程序绘制留在屏幕上的形状。问题是程序在鼠标所在的位置绘制形状 以下面的程序为例。假设用户在点50,50处单击小程序并拖动鼠标以绘制右下角为70,70的矩形。程序将在最终矩形内绘制多个矩形,即右下角位于54、56、63、61等的矩形。。我只想显示最后的矩形,但也同时使用橡皮筋效果。如果用户绘制第二个矩形,第一个矩形将保留在屏幕上,而用户绘制第二个矩形 我如何修改代码以使其工作 import java.aw
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*/ {}
}
你把油漆链弄断了。未能调用super.paint会阻止小程序准备图形上下文进行绘制,因为它会删除以前可能绘制过的任何内容。不需要覆盖更新,因为您没有对它做任何操作。
通常,您应该避免覆盖顶层容器的绘制,因为它们不是双缓冲的,并且在重新绘制时会闪烁
您应该避免使用Applet,而是使用jappleta(例如JPanel)的组合作为绘图表面。事实上,如果你只是在学习。最好使用JFrame,因为小程序有很多额外的管理
绘画的本质是破坏性的。您需要维护一个要绘制的内容列表。在这里,我推荐一个点列表,可以用来绘制线,其中最后一个点是当前拖动点
还可以查看有关绘画工作原理的详细信息您必须保存上次绘制的内容,在其上绘制新内容,然后绘制整个内容。它的基本2d图形。你也必须对HTML5的画布做同样的事情。我正在用更新做一些事情——这是用户如何绘制其他矩形,而不会使以前的矩形消失。@Tnt现在我对Java有了更多的经验,我可以说你的提示对我帮助很大。我感谢你的帮助!