2011-06-01 77 views
2

我想在程序的JFrame上顯示我的屏幕的完整屏幕截圖。 到目前爲止,使用下面的代碼,我只能夠顯示部分屏幕。 下面的代碼是油漆的內容(圖形g)。 如何讓它全屏?Java Full Screenshot

// the screen resolution is 1280 x 1024 while the JPanel size is only 1024 x 768 
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize(); 
Rectangle rectangle = new Rectangle(resolution); 
robot = new Robot(); 
BufferedImage bufferedImage = robot.createScreenCapture(rectangle);         
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 
+2

嗯,你爲什麼不使用'新尺寸(1280,1024 )'而不是?或者我錯過了什麼? – BalusC 2011-06-01 03:03:14

+0

我放錯了代碼。我立即更新了它們。 – 2011-06-01 03:08:28

+0

我還是不明白具體問題。 – BalusC 2011-06-01 03:45:21

回答

1

//get the screen size 
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
BufferedImage image = robot.createScreenCapture (dim); 
//other code 
//... 

我看你有一些錯誤,我不知道,如果你的代碼甚至編譯「,因爲引用似乎沒有被聲明,但類似於此代碼的代碼將會在您的桌面上添加一個屏幕截圖:

import java.awt.geom.*; 
import java.awt.*; 
import java.awt.image.*; 
import javax.imageio.*; 
import java.io.*; 

public class ScreenCapturer 
{ 
    public static void main(String[] args)throws Exception 
    { 
     Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize(); 
     Rectangle rectangle = new Rectangle(resolution); 
     Robot robot = new Robot(); 
     BufferedImage bufferedImage = robot.createScreenCapture(rectangle); 
     Graphics g = bufferedImage.getGraphics(); 
     //g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 
     File out = new File("image.png"); 
     ImageIO.write(bufferedImage,"png",out); 
    } 
} 

我保存到一個PNG圖像文件,而不是將其繪製在屏幕或框架上。

+0

我已經在代碼中使用過它們。然而,同樣的事情返回 – 2011-06-01 03:10:31

+0

看到我最後的編輯 – 2011-06-01 03:54:39

0
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 

通過每行僅使用一條語句來簡化您的代碼,那麼您可能會理解代碼。

爲什麼你是圖像的寬度和高度?如果您指定圖像的完整大小,這是如何縮放圖像的?我猜你想:

Image scaled = bufferedImage.getScaledInstance(1024, 768, Image.SCALE_DEFAULT); 

現在不是定製做畫你可以添加圖片到JLabel:

ImageIcon icon = new ImageIcon(scaled); 
JLabel label = new JLabel(icon); 
frame.add(label);