2011-05-25 31 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

相关问题