📄 catchscreenimageframe.java
字号:
package cn.dxm.frame;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Panel;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.JWindow;
import cn.dxm.util.CatchScreenImage;
import cn.dxm.util.GetCatchScreenImageRectangle;
import cn.dxm.util.ImageUtil;
public class CatchScreenImageFrame extends Panel {
/**
*
*/
private static final long serialVersionUID = 328470435314173400L;
/**
* author:dxm
*/
private JWindow window;
private BufferedImage screenImage;
private BufferedImage catchImg;
private Point first_point = new Point(0, 0);;
private Point second_point = new Point(0, 0);
private Rectangle rec;
// 此标志为真是,表示截图,否则不能截图,鼠标托动时设为真,表示截图,当鼠标松开时,设为假.
private boolean wheterCutImageflag = false;
public CatchScreenImageFrame() {
window = new JWindow();
CatchScreenImage catchImage = new CatchScreenImage();
screenImage = catchImage.catchScreenImage();
window.add("Center", this);
window.setSize(Toolkit.getDefaultToolkit().getScreenSize());
window.setVisible(true);
window.setAlwaysOnTop(true);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (first_point.x == 0) {
first_point = new Point(e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
// 松开设是否截图标志为false,且对坐标点清空.
wheterCutImageflag = false;
first_point=new Point(0,0);
second_point=new Point(0,0);
}
public void mouseClicked(MouseEvent e) {
CatchScreenImage catchImage = new CatchScreenImage();
// 如果截图成功.则将截图保存到默认文件夹下.
if (rec != null) {
catchImg = catchImage.catchChoiceImage(rec);
ImageUtil.saveImage(catchImg,"src/c.jpg" );
} else {// 截图失败,展示截图失败的图片.
javax.swing.JOptionPane.showMessageDialog(null,"取样失败,请重试");
}
window.setVisible(false);
}
});
addMouseMotionListener(new MouseAdapter() {
public void mouseDragged(MouseEvent e) {
// 托动表示截图.
wheterCutImageflag = true;
second_point = new Point(e.getX(), e.getY());
repaint();
}
});
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(screenImage, 0, 0, getWidth(), getHeight(), getX(), getY(),
getX() + getWidth(), getY() + getHeight(), this);
g2d.setColor(Color.red);
g2d.setStroke(new BasicStroke(2));
if (this.wheterCutImageflag) {
GetCatchScreenImageRectangle getRec = new GetCatchScreenImageRectangle();
rec = getRec.getRectangle(first_point, second_point);
g2d.drawRect(rec.x, rec.y, rec.width, rec.height);
}
}
public void update(Graphics g) {
paint(g);
}
public BufferedImage getCatchImg() {
return catchImg;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -