这是一个 Java 版的截图程序
复制代码代码如下:
แพ็คเกจ com.hongyuan.test;
นำเข้า java.awt.awtexception;
นำเข้า Java.awt.BorderLayout;
นำเข้า Java.awt.Color;
นำเข้า Java.awt.Dimension;
นำเข้า java.awt.eventqueue;
นำเข้า java.awt.flowlayout;
นำเข้า java.awt.graphics;
นำเข้า java.awt.image;
นำเข้า Java.awt.Rectangle;
นำเข้า java.awt.robot;
นำเข้า java.awt.toolkit;
นำเข้า java.awt.event.actionEvent;
นำเข้า java.awt.event.actionListener;
นำเข้า java.awt.event.mouseadapter;
นำเข้า java.awt.event.mousevent;
นำเข้า java.awt.event.mousemotionadapter;
นำเข้า java.awt.image.bufferedimage;
นำเข้า java.awt.image.rescaleop;
นำเข้า Java.io.File;
นำเข้า java.io.ioException;
นำเข้า java.text.simpledateFormat;
นำเข้า java.util.date;
นำเข้า Javax.imageio.imageio;
นำเข้า Javax.swing.imageicon;
นำเข้า Javax.swing.jbutton;
นำเข้า Javax.swing.jfilechooser;
นำเข้า Javax.swing.jtoolbar;
นำเข้า Javax.swing.jwindow;
นำเข้า javax.swing.filechooser.filenameextensionFilter;
นำเข้า javax.swing.filechooser.filesystemview;
สกรีนช็อตชั้นเรียนสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
Eventqueue.invokelater (ใหม่ runnable () {
@Override
โมฆะสาธารณะเรียกใช้ () {
พยายาม {
ScreenShotWindow SSW = ใหม่ ScreenShotWindow ();
SSW.SetVisible (จริง);
} catch (awtexception e) {
E.PrintStackTrace ();
-
-
-
-
-
-
* 截图窗口
-
คลาส ScreenShotWindow ขยาย JWINDOW
-
ส่วนตัว int orgx, orgy, endx, endy;
ภาพส่วนตัว bufferedImage = null;
BufferedImage Private Tempimage = NULL;
bufferedImage ส่วนตัว saveimage = null;
Toolsswindow Tools = NULL;
Public ScreenshotWindow () พ่น Awtexception {
// 获取屏幕尺寸
Dimension D = Toolkit.getDefaultToolkit (). getScreensize ();
this.setbounds (0, 0, D.Width, D.Height);
// 截取屏幕
หุ่นยนต์หุ่นยนต์ = ใหม่หุ่นยนต์ ();
image = robot.createscreencapture (สี่เหลี่ยมผืนผ้าใหม่ (0, 0, d.width, d.height));
this.addmouselistener (ใหม่ mouseadapter () {
@Override
โมฆะสาธารณะ mousepressed (MouseEvent E) {
// 鼠标松开时记录结束点坐标, 并隐藏操作窗口
orgx = e.getx ();
orgy = e.gety ();
ถ้า (เครื่องมือ! = null) {
Tools.setVisible (เท็จ);
-
-
@Override
โมฆะสาธารณะ mouseerleased (MouseEvent E) {
// 鼠标松开时, 显示操作窗口
ถ้า (เครื่องมือ == null) {
เครื่องมือ = new Toolsswindow (screenshotwindow.his, e.getx (), e.gety ());
}อื่น{
Tools.setLocation (e.getx (), e.gety ());
-
Tools.setVisible (จริง);
Tools.tofront ();
-
-
this.addmousemotionListener (ใหม่ mousemotionadapter () {
@Override
โมฆะสาธารณะ mousedragged (MouseEvent E) {
// 鼠标拖动时, 记录坐标并重绘窗口
endx = e.getx ();
endy = e.gety ();
// 临时图像, 用于缓冲屏幕区域放置屏幕闪烁
Image Tempimage2 = createImage (screenshotwindow.his.getWidth (), screenshotwindow.this.getheight ());
กราฟิก g = tempimage2.getGraphics ();
G.Drawimage (Tempimage, 0, 0, Null);
int x = math.min (orgx, endx);
int y = math.min (orgy, endy);
int width = math.abs (endx - orgx) +1;
int height = math.abs (Endy - Orgy) +1;
// 加上 1 防止ความกว้าง或ความสูง 0
G.SetColor (color.blue);
G.DrawRect (X-1, Y-1, ความกว้าง+1, ความสูง+1);
// 减 1 加 1 都了防止图片矩形框覆盖掉
saveimage = image.getSubimage (x, y, ความกว้าง, ความสูง);
G.DrawImage (SaveImage, X, Y, Null);
screenshotwindow.his.getGraphics (). drawimage (Tempimage2,0,0, screenshotwindow.his);
-
-
-
@Override
สีโมฆะสาธารณะ (กราฟิก g) {
Rescaleop RO = ใหม่ Rescaleop (0.8f, 0, null);
tempimage = ro.filter (ภาพ, null);
G.Drawimage (Tempimage, 0, 0, นี้);
-
// 保存图像到文件
โมฆะสาธารณะ saveimage () พ่น IOException {
jfilechooser jfc = ใหม่ jfilechooser ();
jfc.setDialogtitle ("保存");
// 文件过滤器, 用户过滤可选择文件
ตัวกรอง filenameextensionFilter = ใหม่ filenameExtensionFilter ("jpg", "jpg");
jfc.setFileFilter (ตัวกรอง);
// 初始化一个默认文件(此文件会生成到桌面上)
SimpledateFormat SDF = ใหม่ SimpleDateFormat ("yyyymmddhhmmss");
string filename = sdf.format (วันที่ใหม่ ());
ไฟล์ filepath = filesystemview.getFilesystemView (). gethomedirectory ();
ไฟล์ defaultFile = ไฟล์ใหม่ (filePath + file.Sparator + filename + ".jpg");
JFC.SetSelectedFile (DefaultFile);
int flag = jfc.showsavedialog (นี่);
if (flag == jfilechooser.approve_option) {
ไฟล์ไฟล์ = jfc.getSelectedFile ();
String path = file.getPath ();
// 检查文件后缀, 放置用户忘记输入后缀或者输入不正确的后缀
if (! (path.endswith (". jpg") || path.endswith (". jpg"))) {
เส้นทาง+= ". jpg";
-
// 写入文件
imageio.write (saveimage, "jpg", ไฟล์ใหม่ (พา ธ ));
System.Exit (0);
-
-
-
-
* 操作窗口
-
คลาส Toolsswindow ขยาย jwindow
-
ผู้ปกครองหน้าจอส่วนตัว
Toolswindow สาธารณะ (Parent ScreenShotWindow, int x, int y) {
this.parent = Parent;
this.init ();
this.setLocation (x, y);
this.pack ();
this.setVisible (จริง);
-
ช่องว่างส่วนตัว init () {
this.setLayout (New BorderLayout ());
JToolbar Toolbar = new JToolbar ("Java 截图");
// 保存按钮
JButton SaveButton = ใหม่ JButton (ImageIcon ใหม่ ("images/save.gif"));
SaveButton.AddActionListener (ใหม่ ActionListener () {
@Override
โมฆะสาธารณะ ActionPerformed (ActionEvent E) {
พยายาม {
parent.saveimage ();
} catch (ioexception e1) {
e1.printstacktrace ();
-
-
-
Toolbar.add (SaveButton);
// 关闭按钮
JButton CloseButton = ใหม่ JButton (ImageIcon ใหม่ ("images/close.gif"));
closebutton.addactionListener (ใหม่ actionListener () {
@Override
โมฆะสาธารณะ ActionPerformed (ActionEvent E) {
System.Exit (0);
-
-
Toolbar.add (CloseButton);
this.add (แถบเครื่องมือ, Borderlayout.north);
-
-