我想在程序的JFrame上显示我的屏幕的完整屏幕截图。 到目前为止使用下面的代码,我只能显示部分屏幕。 下面的代码是paint的内容(Graphics g)。 如何全屏显示?
// 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);
答案 0 :(得分: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图像文件,而不是在屏幕或框架上绘制。
答案 1 :(得分:0)
使用java.awt.Toolkit.getDefaultToolkit().getScreenSize()
获取屏幕尺寸:http://www.roseindia.net/java/java-get-example/screen-dimensions.shtml
答案 2 :(得分: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 );