我想繪製一個圖像(與鼠標)在一個JPanel,這是工作,但是當我嘗試採取面板的屏幕截圖並生成此圖像時,我只可以看到沒有用鼠標繪製的圖像背景。面板背景圖像採取屏幕截圖
這是我的代碼來生成背景 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();
}
不要在「paint(...)」或「paintComponent(...)」方法內讀取圖像或任何文件,因爲這會不必要地降低圖形速度。這些方法需要儘可能快,以使您的圖形顯示響應。爲什麼不一次只讀一次圖像,將它存儲到一個變量中,然後在'paintComponent(...)'中使用它? –
嘗試讀取'paintComponent'中的圖像的問題是固定的 - 'g.drawImage(this.createImage(「/ imagenes/cuerpoHumano.png」)。getImage(),0,0,null);'應該是'g.drawImage(this.createImage(「/ imagenes/cuerpoHumano.png」)。getImage(),0,0,this);' –