java截屏如何把鼠标箭头截进去

java截屏如何把鼠标箭头截进去,第1张

先把鼠标移动到需要的地方。打开java,使用快捷键Ctrl+Alt+A,这样可以在屏幕上的任何地方截辩判消屏,右键选中截图“另存为”,还可以在截屏图片上做一些简冲悔单的注携知释和处理,还可以将鼠标箭头截取进去。

主要是利用java的几个先有的函数,如Robot这个类的一个方法createScreenCapture一个获得一个任意大小的屏幕图像(在这里是全屏图像),而所谓的截图就是在这个图像上画出一个矩形,再利用上面的方法获得这部分的图像,程序中的cf.setAlwaysOnTop(true)是必需的看起来是在屏幕上截图,其实态枝和只是在一个在一个内镶有桌面背景的JFrame中截图。不知道还有没有其他的好方法~

附上代码:

import java.awt.*

import java.awt.image.*

import java.awt.event.*

import java.io.File

import javax.imageio.ImageIO

import javax.swing.*

public class Camera {

/**

* @param args

*/

public static void main(String[] args) {

CameraJFrame cf=new CameraJFrame()

cf.setAlwaysOnTop(true)

cf.setUndecorated(true)

cf.setVisible(true)

}

}

class CameraJFrame extends JFrame

{

/**

*

*/搭段

private static final long serialVersionUID = 1L

Dimension di=Toolkit.getDefaultToolkit().getScreenSize()

public CameraJFrame()

{

setSize(di)

getContentPane().add(new CameraJPanel())

}

class CameraJPanel extends JPanel implements MouseListener,MouseMotionListener

{

/**

* flag主要是用来判别状态。

* 文件的格式名帆盯是unname+数字编号,格式是png

*/

private static final long serialVersionUID = 1L

BufferedImage bi,get

int startx,starty,endx,endy

int flag=1

String filename="unname"

String fileformat="png"

int count=1

public CameraJPanel()

{

try

{

Robot ro=new Robot()

bi=ro.createScreenCapture(new Rectangle(0,0,di.width,di.height))

}

catch(Exception e)

{

e.printStackTrace()

}

addMouseListener(this)

addMouseMotionListener(this)

}

public void paintComponent(Graphics g)

{

g.drawImage(bi,0,0,di.width,di.height,this)

g.setColor(Color.red)

g.drawRect(startx, starty, endx-startx, endy-starty)

}

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

if(e.getButton()==MouseEvent.BUTTON3)

{

System.exit(0)

}

else if(e.getClickCount()==2)

{

try

{

Robot ro=new Robot()

get=ro.createScreenCapture(new Rectangle(startx,starty,endx-startx,endy-starty))

String name=filename+String.valueOf(count++)+"."+fileformat

File f=new File(name)

ImageIO.write(get, fileformat, f)

}

catch(Exception ex)

{

ex.printStackTrace()

}

flag=1//置flag为1,以便重新开始截图。

startx=starty=endx=endy=0

repaint()

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

if(flag==1)

{

startx=e.getX()

starty=e.getY()

}

}

public void mouseReleased(MouseEvent e) {

flag=0

}

public void mouseDragged(MouseEvent e) {

flag=1

endx=e.getX()

endy=e.getY()

repaint()

}

public void mouseMoved(MouseEvent e) {}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12536135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存