2011-05-25 58 views
1

In Button點擊我已經實現了代碼,當我第一次單擊按鈕時,它會得到x,y位置值,當我第二次單擊該按鈕時,它將獲得x1,y1值並捕獲圖像。但不知何故,它還在原始圖片上添加了黑色背景。我怎樣才能避免這種情況?如何擺脫用Robot拍攝的圖像上的黑色背景?

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; 
} 
+0

我部分格式化你的代碼,但請你花一些時間,使它看起來有點整潔。 – jjnguy 2011-05-25 14:36:54

+0

謝謝jjnguy,我確定。 – jcrshankar 2011-05-25 14:42:45

+0

看到我的新答案。我想我找到了你的問題。 – jjnguy 2011-05-25 15:41:39

回答

0

如果這是一個mouseClicked(MouseEvent event)方法(在MouseListener),爲什麼您使用:

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

你或許應該使用方法上MouseEvent

event.getX(); 

event.getXOnScreen(); 

也許MouseInfo方法給你不正確的值。

+0

Button bob = new Button(); bob.addmouseListner(本);我點擊按鈕給出了這個,它只給出按鈕x,y的位置。 – jcrshankar 2011-05-25 15:28:55

+0

但我需要屏幕x,y位置 – jcrshankar 2011-05-25 15:30:56

+0

@jcrs,因此,您必須在您的代碼中實現鼠標偵聽器,因此您可以訪問'MouseEvent'。 – jjnguy 2011-05-25 15:31:51

0

我想我找到了問題。 Rectangle的構造函數採用xy起始位置,以及heightwidth。它看起來像你給它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); 
+0

否jjnguy,仍然是同樣的問題 – jcrshankar 2011-05-25 15:57:24

+0

我得到了一些其他方式,謝謝jjnguy – jcrshankar 2011-05-25 16:09:55

+0

我得到了d.getwidth(其中維d)和我分開它(m = d.getwidth-x1),我使用像矩形(x,y ,x1-m)喜歡明智的高度 – jcrshankar 2011-05-25 16:11:56

相關問題