分享一个在osc上看到的java版的截图软件
2014-03-05 10:35
225 查看
感觉做的还不错,给大家分享下,要是改进下是不是可以和QQ截图媲美了。 程序截图
原创不易, 转载请注明出处:分享一个在osc上看到的java版的截图软件
代码下载地址:http://www.zuidaima.com/share/1550463293164544.htm
原创不易, 转载请注明出处:分享一个在osc上看到的java版的截图软件
package com.zuidaima.image.capture; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import javax.swing.*; public class Screenshot extends JFrame implements MouseMotionListener, MouseListener { private static final long serialVersionUID = 1L; private BufferedImage buff_img; private Robot robot; private JLabel label; private Point start; private Point end; private int x, y, width, height; private boolean over = false; private JLabel show_sub; private CaptureScreen captureScreen; private ImageIcon icon; private SubImgAction subAction; private JFrame ss = this; class SubImgAction implements MouseListener, MouseMotionListener { private JLabel label; private int x; private int y; private BufferedImage image; private ImageIcon icon; public SubImgAction(JLabel label, BufferedImage image, ImageIcon icon) { this.label = label; this.image = image; this.icon = icon; } @Override public void mouseDragged(MouseEvent e) { Point dragPoint = e.getPoint(); SwingUtilities.convertPointToScreen(dragPoint, label); icon.setImage(image.getSubimage(dragPoint.x - x < 0 ? 0 : dragPoint.x - x, dragPoint.y - y < 0 ? 0 : dragPoint.y - y, label.getWidth(), label.getHeight())); label.setLocation(dragPoint.x - x, dragPoint.y - y); } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == 1 && e.getClickCount() == 2) { new ClipboardUtil().writeToClipboard(image.getSubimage( label.getX(), label.getY(), label.getWidth(), label.getHeight())); ss.dispose(); JOptionPane.showMessageDialog(ss, "指定区域屏幕已复制到剪贴板!"); captureScreen.setVisible(true); } else if (e.getButton() == 3) { ss.dispose(); captureScreen.setVisible(true); } } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { if (e.getButton() == 3) { ss.dispose(); captureScreen.setVisible(true); } Point clickPoint = new Point(e.getPoint()); SwingUtilities.convertPointToScreen(clickPoint, label); x = clickPoint.x - label.getX(); y = clickPoint.y - label.getY(); } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } } public Screenshot(CaptureScreen captureScreen) { this.setLayout(null); this.captureScreen = captureScreen; icon = new ImageIcon(); this.setSize(ScreanSizeUtil.getDimension()); setUndecorated(true); setExtendedState(MAXIMIZED_BOTH); setResizable(false);// 设置不可改变大小 setAlwaysOnTop(true);// 设置总是在顶层(最上层) start = new Point(); end = new Point(); label = new JLabel(); show_sub = new JLabel(); show_sub.setIcon(icon); add(show_sub); try { robot = new Robot(); buff_img = robot.createScreenCapture(new Rectangle(0, 0, ScreanSizeUtil.getDimension().width, ScreanSizeUtil .getDimension().height));// 获得整个屏幕 subAction = new SubImgAction(show_sub, buff_img, icon); show_sub.addMouseListener(subAction); show_sub.addMouseMotionListener(subAction); show_sub.setBorder(BorderFactory.createLineBorder(Color.RED, 2)); label = new JLabel() { private static final long serialVersionUID = 1L; protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(buff_img, 0, 0, this); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(new Color(150, 150, 150)); AlphaComposite composite = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 60 / 100.0F); g2d.setComposite(composite); g2d.fill(new RoundRectangle2D.Float(0, 0, this.getWidth(), this.getHeight(), 0, 0)); } }; label.setBounds(0, 0, getWidth(), this.getHeight()); add(label); } catch (AWTException e) { e.printStackTrace(); } setVisible(true); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } robot.createScreenCapture(new Rectangle(0, 0, ScreanSizeUtil .getDimension().width, ScreanSizeUtil.getDimension().height)); addMouseListener(this); addMouseMotionListener(this); } @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { start.x = e.getX(); start.y = e.getY(); } @Override public void mouseReleased(MouseEvent e) { over = true; } @Override public void mouseDragged(MouseEvent e) { if (!over) { end.x = e.getX(); end.y = e.getY(); x = Math.min(start.x, end.x); y = Math.min(start.y, end.y); width = Math.abs(end.x - start.x); height = Math.abs(end.y - start.y); if (width == 0 || height == 0) return; icon.setImage(buff_img.getSubimage(x, y, width, height)); show_sub.setBounds(x, y, width, height); // repaint(); } } @Override public void mouseMoved(MouseEvent e) { end.x = e.getX(); end.y = e.getY(); // repaint(); } }
代码下载地址:http://www.zuidaima.com/share/1550463293164544.htm
相关文章推荐
- 准备学Java,分享一个环境变量配置的软件
- 用GO帮朋友写了一个批量群发的软件,其中一个需求是使用rsa登录ssh,代码片段分享.
- 分享一个自己写的串口数据分析、图形显示软件 can debugger 串口调试助手 免费,功能强大!
- 一个JAVA程序员成长之路分享
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- 分享一个gif截图工具
- java实现一个简单TCPSocket聊天室功能分享
- 分享一个修改过的Sha1加密算法的Java实现
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接
- 3年前的一个小项目经验,分享给菜鸟兄弟们(公文收发小软件:程序开发部分)
- 【分享】Java软件架构师所要需的东西 (希望对很多迷茫的朋友指个路)
- 3年前的一个小项目经验,分享给菜鸟兄弟们(公文收发小软件:程序开发部分)
- [置顶]教你如何秒杀12306,JAVA程序抢票成功!分享~~~[附截图]
- 分享一个 数据库代码编辑软件的源代码
- 分享一个java正则验证类
- 论坛上看到的一个java输出顺序问题。
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- 软件易用性文章分享第二篇-手机易用性: 一个经典的实验
- 搭建一个开发Predix软件的Windows系统(4)配置Java开发环境
- 一个关于Java HTTP协议的错误及解决办法分享