Selecione uma área para capturar usando o mouse

Estou fazendo um aplicativo de captura de canvas baseado em Java e quero fazer isso quando você pressiona uma combinação de teclas no teclado. área selecionada.

Como selecionar uma área para capturar usando o mouse?

Comece com algo assim.

Retângulo de captura de tela

import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; /** Getting a Rectangle of interest on the screen. Requires the MotivatedEndUser API - sold separately. */ public class ScreenCaptureRectangle { Rectangle captureRect; ScreenCaptureRectangle(final BufferedImage screen) { final BufferedImage screenCopy = new BufferedImage( screen.getWidth(), screen.getHeight(), screen.getType()); final JLabel screenLabel = new JLabel(new ImageIcon(screenCopy)); JScrollPane screenScroll = new JScrollPane(screenLabel); screenScroll.setPreferredSize(new Dimension( (int)(screen.getWidth()/3), (int)(screen.getHeight()/3))); JPanel panel = new JPanel(new BorderLayout()); panel.add(screenScroll, BorderLayout.CENTER); final JLabel selectionLabel = new JLabel( "Drag a rectangle in the screen shot!"); panel.add(selectionLabel, BorderLayout.SOUTH); repaint(screen, screenCopy); screenLabel.repaint(); screenLabel.addMouseMotionListener(new MouseMotionAdapter() { Point start = new Point(); @Override public void mouseMoved(MouseEvent me) { start = me.getPoint(); repaint(screen, screenCopy); selectionLabel.setText("Start Point: " + start); screenLabel.repaint(); } @Override public void mouseDragged(MouseEvent me) { Point end = me.getPoint(); captureRect = new Rectangle(start, new Dimension(end.x-start.x, end.y-start.y)); repaint(screen, screenCopy); screenLabel.repaint(); selectionLabel.setText("Rectangle: " + captureRect); } }); JOptionPane.showMessageDialog(null, panel); System.out.println("Rectangle of interest: " + captureRect); } public void repaint(BufferedImage orig, BufferedImage copy) { Graphics2D g = copy.createGraphics(); g.drawImage(orig,0,0, null); if (captureRect!=null) { g.setColor(Color.RED); g.draw(captureRect); g.setColor(new Color(255,255,255,150)); g.fill(captureRect); } g.dispose(); } public static void main(String[] args) throws Exception { Robot robot = new Robot(); final Dimension screenSize = Toolkit.getDefaultToolkit(). getScreenSize(); final BufferedImage screen = robot.createScreenCapture( new Rectangle(screenSize)); SwingUtilities.invokeLater(new Runnable() { public void run() { new ScreenCaptureRectangle(screen); } }); } } 
    Intereting Posts