在 JPanel 实现中,矩形会消失,因为 Paint() 方法会覆盖以前的绘图。为了防止这种情况,我们修改我们的方法:
我们不直接在 JPanel 上绘图,而是使用 BufferedImage (canvasImage) 作为绘画表面。这使得我们可以永久修改图像,而不影响之前的绘图。
这里有一个修改后的paint()方法,使用canvasImage进行绘图:
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
在 JPanel 构造函数中初始化 canvasImage,如下所示:
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
并设置其绘图的图形上下文:
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
现在,你的DrawRect()方法可以直接修改canvasImage了:
public void DrawRect(int x, int y, int size, Color c) {
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(c);
cg.fillRect(x, y, size, size);
}
此方法提供了几个好处:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3