我试图画一个图像(用鼠标)在一个jpanel,这是工作,但当我试图采取一个屏幕截图的面板,并产生一个图像,这,我只能看到图像背景没有用鼠标绘制。
这是我生成background panel.java的代码
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(this.createImage("/imagenes/cuerpoHumano.png").getImage(), 0, 0, null);
}
这是我用铅笔画在图片上的代码:panel.java
private void formMouseDragged(java.awt.event.MouseEvent evt) {
x = evt.getX();
y = evt.getY();
this.getGraphics().setColor(Color.RED);
this.getGraphics().fillOval(x, y, 4, 4);
}
这是生成屏幕截图的代码
Dimension size = panel.getSize();
BufferedImage image = (BufferedImage) panel.createImage(size.width, size.height);
Graphics g = image.getGraphics();
panel.paint(g);
g.dispose();
try {
String fileName = UUID.randomUUID().toString().substring(0, 18);
ImageIO.write(image, "jpg", new File(path, fileName + ".jpg"));
} catch (IOException e) {
e.printStackTrace();
}
2条答案
按热度按时间xiozqbni1#
我认为这是有效的代码。
uqzxnwby2#
当你拍摄截图时
paintComponent()
方法被调用。这意味着它只会给你描绘图像。必须将鼠标移动存储在某个模型中,并在paintComponent()
方法。此方法通过调用repaint()
在面板上移动鼠标。