2013-06-20 2 views
0

Можно ли печатать часть экрана вокруг мыши? Стараюсь с:Печатать часть экрана

Toolkit tool = Toolkit.getDefaultToolkit(); 
Dimension d = tool.getScreenSize(); 
Rectangle rect = new Rectangle(d); 
Robot robot = new Robot(); 
File f = new File("screenshot.jpg"); 
BufferedImage img = robot.createScreenCapture(rect); 
ImageIO.write(img,"jpeg",f); 

но он печатает весь экран, я могу видеть, что я могу установить размер прямоугольника, но я не вижу, как я могу центрировать прямоугольник так, чтобы он был вокруг мыши.

+0

Сколько области вокруг мыши вы хотите распечатать? –

+0

Я не знаю, может быть, 300 х 300, это действительно не метр. – prowebphoneapp

ответ

3
public static BufferedImage printScrAroundCursor(int width, int height) 
{ 
    Toolkit tool = Toolkit.getDefaultToolkit(); 
    Robot robot = new Robot(); 

    PointerInfo a = MouseInfo.getPointerInfo(); 
    Point b = a.getLocation(); 
    int x = (int) b.getX(); 
    int y = (int) b.getY(); 

    int topLeftX = Math.max(0, x - (width/2)); 
    int topLeftY = Math.max(0, y - (height/2)); 
    if (topLeftX + width > tool.getScreenSize().getWidth()) 
     width = tool.getScreenSize().getWidth() - topLeftX; 
    if (topLeftX + width > tool.getScreenSize().getHeight()) 
     width = tool.getScreenSize().getHeight() - topLeftY; 
    return robot.createScreenCapture(new Rectangle(topLeftX , topLeftY , width, height)); 
} 
2

Вы можете использовать MouseInfo, чтобы получить информацию о местоположении пользователя. Оттуда, это просто середина математика:

int width = ...; 
int height = ...; 
Point m = MouseInfo.getPointerInfo().getLocation(); 
Rectangle rect = new Rectangle(m.x - width/2, m.y - height/2, width, height); 
Robot robot = new Robot(); 
File f = new File("screenshot.jpg"); 
BufferedImage img = robot.createScreenCapture(rect); 
ImageIO.write(img, "jpeg" ,f); 

Вы, вероятно, столкнетесь странные результатами, если мышь находится слишком близко к краю экрана, но без дополнительной информации, это особое поведение до вас, чтобы определить, как желаю, чтобы это было.

0
Point mousePos = MouseInfo.getPointerInfo().getLocation(); 
int width = 300; 
int height = 300; 
Point origin = new Point(mousePos.getX() - width/2, mousePos.getY() - height/2); 
Rectangle rect = new Rectangle(origin.getX(), origin.getY(), width, height); 
BufferedImage img = robot.createScreenCapture(rect); 
Смежные вопросы