1

ボタンクリックでコードを実装しました。最初にボタンをクリックするとx、y位置の値が取得され、2回目にボタンをクリックするとx1、y1値が取得され、画像がキャプチャされます。しかし、どういうわけか、元の画像に黒い背景が追加されています。どうすればこれを回避できますか?

Toolkit tool = Toolkit.getDefaultToolkit();
c++;
Dimension d = tool.getScreenSize();
if(c==1)
{
    x = MouseInfo.getPointerInfo().getLocation().x; 
    y = MouseInfo.getPointerInfo().getLocation().y;
}
if(c==2)
{
    int x1= MouseInfo.getPointerInfo().getLocation().x; 
    int y1= MouseInfo.getPointerInfo().getLocation().y;
    Rectangle rect = new Rectangle(x,y,x1,y1);
    Robot robot = new Robot();
    String J="Screen";
    J=J+""+i;
    //*************
    String ext = ".jpg";
    String path = loc+J+ ext;
    File f = new File(path);
    i++;
    Thread t1 = new Thread();
    t1.sleep(100);
    BufferedImage img = robot.createScreenCapture(rect);
    // img.createGraphics();
    ImageIO.write(img,"jpeg",f);
    tool.beep();
    c=0;
    x=0;
    y=0;
    x1=0;
    y1=0;  
}
4

2 に答える 2

0

私は問題を見つけたと思います。のコンストラクターRectangleは、xy開始位置、およびheightとを取りますwidth。2 x/yポイントを与えているようです。

代わりにこれを試してください:

int height = Math.max(y - y1, y1 - y);
int width = Math.max(x - x1, x1 - x);
Rectangle rect = new Rectangle(x,y,width, height);
于 2011-05-25T15:41:23.040 に答える
0

これがmouseClicked(MouseEvent event)メソッド内にある場合 (内MouseListener)、なぜ使用しているのですか:

MouseInfo.getPointerInfo().getLocation().x;

おそらく次のメソッドを使用する必要がありますMouseEvent

event.getX();

また

event.getXOnScreen();

おそらく、MouseInfoメソッドが誤った値を示している可能性があります。

于 2011-05-25T14:50:26.927 に答える