本文实例讲述了Java模拟QQ桌面截图功能实现方法。分享给大家供大家参考。具体如下:
QQ的桌面截图功能非常方便,去年曾用Java模拟过一个,现整理出来。
本方法首先需要抓到屏幕的整个图象,将图象显示在一个JFrame中,再将JFrame全屏显示,这样就模拟出了一个桌面,Java也就可以获得鼠标的作用区域从而实现桌面中的小范围截屏。
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; /** * 用Java模拟出QQ桌面截图功能 */ public class Test extends JFrame { private static final long serialVersionUID = -267804510087895906L; private JButton button = null; private JLabel imgLabel = null; public Test() { button = new JButton("模拟屏幕(点右键退出)"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { new ScreenWindow(imgLabel); } catch (Exception e1) { JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); } } }); JPanel pane = new JPanel(); pane.setBackground(Color.WHITE); imgLabel = new JLabel(); pane.add(imgLabel); JScrollPane spane = new JScrollPane(pane); this.getContentPane().add(button, BorderLayout.NORTH); this.getContentPane().add(spane); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 200); this.setLocationRelativeTo(null); this.setVisible(true); } public static void main(String[] args) { new Test(); } } class ScreenWindow extends JFrame { private static final long serialVersionUID = -3758062802950480258L; private boolean isDrag = false; private int x = 0; private int y = 0; private int xEnd = 0; private int yEnd = 0; public ScreenWindow(final JLabel imgLabel) throws AWTException, InterruptedException { Dimension screenDims = Toolkit.getDefaultToolkit().getScreenSize(); JLabel label = new JLabel(new ImageIcon(ScreenImage.getScreenImage(0, 0, screenDims.width, screenDims.height))); label.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); label.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON3) { dispose(); } } public void mousePressed(MouseEvent e) { x = e.getX(); y = e.getY(); } public void mouseReleased(MouseEvent e) { if (isDrag) { xEnd = e.getX(); yEnd = e.getY(); if(x > xEnd){ int temp = x; x = xEnd; xEnd = temp; } if(y > yEnd){ int temp = y; y = yEnd; yEnd = temp; } try { imgLabel.setIcon(new ImageIcon(ScreenImage.getScreenImage(x, y, xEnd - x, yEnd - y))); } catch (Exception ex) { JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); } dispose(); } } }); label.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { if(!isDrag) isDrag = true; } public void mouseMoved(MouseEvent e) { /** 拖动过程的虚线选取框需自己实现 */ } }); this.setUndecorated(true); this.getContentPane().add(label); this.setSize(screenDims.width, screenDims.height); this.setVisible(true); this.setExtendedState(JFrame.MAXIMIZED_BOTH); } } class ScreenImage { public static Image getScreenImage(int x, int y, int w, int h) throws AWTException, InterruptedException { Robot robot = new Robot(); Image screen = robot.createScreenCapture(new Rectangle(x, y, w, h)).getScaledInstance(w, h, Image.SCALE_SMOOTH); MediaTracker tracker = new MediaTracker(new Label()); tracker.addImage(screen, 1); tracker.waitForID(0); return screen; } }
希望本文所述对大家的java程序设计有所帮助。
本文向大家介绍C# 实现QQ式截图功能实例代码,包括了C# 实现QQ式截图功能实例代码的使用技巧和注意事项,需要的朋友参考一下 这个功能一共有两部分组成,第一部分是窗体代码,另外的一部分是一个辅助方法。直接贴出代码,以供大家参考: 第二部分是辅助方法类 实现的效果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍C#实现QQ截图功能及相关问题,包括了C#实现QQ截图功能及相关问题的使用技巧和注意事项,需要的朋友参考一下 对于QQ截图,肯定是早就有认识了,只是一直没有去认真观察这个操作的具体实现步骤。所以这里将自己的记忆中的步骤简单的写一下: 习惯性用QQ或者TIM的人,一般是使用Ctrl+Alt+A 快捷键(热键)快速实现截图。 Ctrl+Alt+A 进入截图模式 鼠标左键点击 鼠标拖动
本文向大家介绍VBS实现截图功能,包括了VBS实现截图功能的使用技巧和注意事项,需要的朋友参考一下 百度说,VBS很难截图,倒是有个利用第三方软件的方法,调用该软件,然后该软件会自动截图。 但这样,违背了用VBS的初衷。 用VBS就是因为它方便快捷。要是用第三方软件的话,干脆我们直接用VB写一个好了。 那么...只好调用Excel用VBA去做了。 有什么更好的方法吗? 在度娘上翻了很久,没有什么好
本文向大家介绍Android实现拍照截图功能,包括了Android实现拍照截图功能的使用技巧和注意事项,需要的朋友参考一下 本文将向大家展示如何拍照截图。 先看看效果图: 拍照截图有点儿特殊,要知道,现在的Android智能手机的摄像头都是几百万的像素,拍出来的图片都是非常大的。因此,我们不能像对待相册截图一样使用Bitmap小图,无论大图小图都统一使用Uri进行操作。 一、首先准备好需要使用到的
本文向大家介绍python实现桌面壁纸切换功能,包括了python实现桌面壁纸切换功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现桌面壁纸切换功能的具体实现方法,供大家参考,具体内容如下 大体分为两个部分 一、利用爬虫爬取壁纸 第一部分爬取图片url地址并且下载至本地 爬虫针对 http://image.so.com/ 【360壁纸写的】,如果要更换url地址自己
本文向大家介绍Selenium Webdriver实现截图功能的示例,包括了Selenium Webdriver实现截图功能的示例的使用技巧和注意事项,需要的朋友参考一下 前几天在研究中自动化的时候突发奇想,想着能不能来截个图,以便之后查看,实现的方法其实也不难,毕竟selenium webdriver已经提供了截图额功能,TakesScreenshot接口函数(英文意思就是获取屏幕截图takes