这是一个 Java 版的截图程序
复制代码代码如下::
Paket com.hongyuan.test;
import Java.awt.awtexception;
Import Java.awt.BorderLayout;
Import Java.awt.Color;
Import Java.awt.Dimension;
Import Java.awt.Eventqueue;
import Java.awt.flowlayout;
importieren java.awt.graphics;
import Java.awt.image;
Import Java.awt.Rectangle;
import Java.awt.robot;
import Java.awt.toolkit;
import Java.awt.event.ActionEvent;
import Java.awt.event.ActionListener;
Import Java.awt.event.Mouseadapter;
import Java.awt.event.mouseeEvent;
import Java.awt.event.mousemotionAdapter;
Import Java.awt.image.BuffenedImage;
Import Java.awt.image.Rescaleop;
Import Java.io.file;
importieren java.io.ioException;
Java.Text.SimpledateFormat importieren;
import Java.util.date;
import Javax.imageo.imageo;
import Javax.swing.imageicon;
import Javax.swing.jbutton;
import Javax.swing.jfilechooser;
import Javax.swing.jtoolbar;
import Javax.swing.jwindow;
import Javax.swing.filechooser.FileNameExtensionSesionFilter;
import Javax.swing.filechooser.FilesystemView;
öffentliche Klasse Screenshottest {
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
@Override
public void run () {
versuchen {
ScreenshotWindow SSW = New ScreenshotWindow ();
ssw.setvisible (true);
} catch (awtexception e) {
E. printstacktrace ();
}
}
});
}
}
/*
* 截图窗口
*/
Klasse ScreenshotWindow erweitert JWindow
{
private int orgx, organ, endx, endy;
privates bufferedimage Image = null;
private bufferedimage tempimage = null;
private bufferedImage SaveImage = null;
private Toolsschwindow -Tools = NULL;
public screenshotWindow () löst Awtexception {aus
// 获取屏幕尺寸
Dimension d = Toolkit.getDefaulttoolkit (). GetCreenSize ();
this.setBounds (0, 0, D. Width, D.Height);
// 截取屏幕
Robot Robot = new Robot ();
Image = Robot.CreateScreencapture (neues Rechteck (0, 0, D. Width, D.Height));
this.addmouselistener (neuer Mouseadapter () {
@Override
public void mousePressed (mouseevent e) {
// 鼠标松开时记录结束点坐标 , 并隐藏操作窗口
orgx = e.getX ();
organ = e.gety ();
if (Tools! = null) {
Tools.setVisible (false);
}
}
@Override
public void mouseerleased (MouseEvent e) {
// 鼠标松开时 , 显示操作窗口
if (tools == null) {
Tools = New Toolswindow (ScreenshotWindow.This, E.getX (), E.gety ());
}anders{
Tools.setLocation (e.getX (), e.gety ());
}
Tools.setVisible (true);
Tools.tofront ();
}
});
this.addMousemotionListener (New MousemotionAdapter () {
@Override
public void mouedragged (MouseEvent e) {
// 鼠标拖动时 , 记录坐标并重绘窗口
endx = e.getX ();
endy = e.gety ();
// 临时图像 , 用于缓冲屏幕区域放置屏幕闪烁
Bildtempimage2 = CreateImage (ScreenshotWindow.this.getWidth (), ScreenshotWindow.this.Getheight ());
Grafik g = tempimage2.getGraphics ();
g.drawimage (tempimage, 0, 0, null);
int x = math.min (orgx, endx);
int y = math.min (Orgie, Endy);
int width = math.abs (endx - orgx) +1;
int height = math.abs (endy - organ) +1;
// 加上 1 防止 Breite 或 Höhe0
G.SetColor (color.Blue);
G.Drawrect (x-1, y-1, Breite+1, Höhe+1);
// 减 1 加 1 都了防止图片矩形框覆盖掉
SaveImage = Image.GetSubimage (x, y, width, Höhe);
G.Drawimage (SaveImage, X, Y, Null);
Screenshotwindow.this.getGraphics (). DrawImage (Tempimage2,0,0, ScreenshotWindow.This);
}
});
}
@Override
public void Paint (Grafik g) {
Scaleop ro = new SCALEOP (0,8F, 0, NULL);
tempimage = ro.filter (Bild, null);
g.drawimage (tempimage, 0, 0, this);
}
// 保存图像到文件
public void SaveImage () löst ioException {aus {
JFilechooser jfc = new JFilechoOser ();
jfc.setDialogtitle ("保存");
// 文件过滤器 , 用户过滤可选择文件
FileNameExtensionSectionFilter filter = new FileNameEXtaSaPleFilter ("JPG", "JPG");
JFC.SetFileFilter (Filter);
// 初始化一个默认文件(此文件会生成到桌面上)
SimpleDateFormat SDF = new SimpledateFormat ("yyyymmddhhmms");
String Dateiname = SDF.Format (neues Datum ());
Datei filepath = fileSystemView.getFilesSystemView (). Gethomedirectory ();
Datei defaultFile = neue Datei (FilePath + Datei.Separator + Dateiname + ".JPG");
JFC.SetSelectedFile (defaultFile);
int flag = jfc.showsavedialog (this);
if (Flag == JFILECHOOSER.Approve_Option) {
Datei Datei = jfc.getSelectedFile ();
String path = file.getPath ();
// 检查文件后缀 , 放置用户忘记输入后缀或者输入不正确的后缀
if (! (path.endswith (". jpg") || path.endswith (". JPG"))) {
Pfad+= ". JPG";
}
// 写入文件
Imageio.write (SaveImage, "JPG", neue Datei (Pfad));
System.exit (0);
}
}
}
/*
* 操作窗口
*/
Die Klassenwerkzeuge erweitern JWindow
{
private Screenshotwindow Eltern;
public toolswindow (ScreenshotWindow Parent, int x, int y) {
this.Parent = Eltern;
this.init ();
this.setLocation (x, y);
this.pack ();
this.setvisible (true);
}
private void init () {
this.setLayout (neuer BorderLayout ());
JToolBar Symbolleiste = new Jtoolbar ("Java 截图");
// 保存按钮
Jbutton SaveButton = New Jbutton (New ImageIcon ("Images/Save.gif");
SaveButton.AddactionListener (new ActionListener () {
@Override
public void actionperformed (actionEvent e) {
versuchen {
parent.saveimage ();
} catch (ioException e1) {
e1.printstacktrace ();
}
}
});
Symbolleiste (SaveButton);
// 关闭按钮
Jbutton CloseButton = New Jbutton (New ImageIcon ("Images/Close.gif");
CloseButton.AddactionListener (new ActionListener () {
@Override
public void actionperformed (actionEvent e) {
System.exit (0);
}
});
Symbolleiste.Add (Nahbutton);
this.add (Symbolleiste, BorderLayout.North);
}
}