3

画面のスクリーンショット全体をプログラムのJFrameに表示したかったのです。これまでのところ、以下のコードを使用して、画面の一部しか表示できませんでした。以下のコードは、ペイント(グラフィックス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);
4

3 に答える 3

2

多分このようなものを使用しています:

//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画像ファイルに保存しました。

于 2011-06-01T03:08:02.737 に答える
0
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);

1行に1つのステートメントを使用するだけでコードを単純化すると、コードを理解できる可能性があります。

画像の幅と高さを使用するのはなぜですか?画像のフルサイズを指定した場合、画像はどのように拡大縮小されますか?私はあなたが望むと思います:

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

これで、カスタムペイントを行う代わりに、画像をJLabelに追加することができます。

ImageIcon icon = new ImageIcon( scaled );
JLabel label = new JLabel( icon );
frame.add( label );
于 2011-06-01T04:49:48.467 に答える
0

java.awt.Toolkit.getDefaultToolkit().getScreenSize()画面のサイズを取得するために使用します: http ://www.roseindia.net/java/java-get-example/screen-dimensions.shtml

于 2011-06-01T03:03:58.633 に答える