这是一个 Java 版的截图程序
复制代码代码如下:
paket com.hongyuan.test;
impor java.awt.awtexception;
impor java.awt.borderlayout;
impor java.awt.color;
impor java.awt.dimension;
impor java.awt.eventqueue;
impor java.awt.flowlayout;
impor java.awt.graphics;
impor java.awt.image;
impor java.awt.rectangle;
impor java.awt.robot;
impor java.awt.toolkit;
impor java.awt.event.actionevent;
impor java.awt.event.actionlistener;
impor java.awt.event.mouseadapter;
impor java.awt.event.mouseevent;
impor java.awt.event.mousemotionAdapter;
impor java.awt.image.bufferedimage;
impor java.awt.image.Rescaleop;
impor java.io.file;
impor java.io.ioException;
impor java.text.simpledateFormat;
impor java.util.date;
impor javax.imageio.imageio;
impor javax.swing.imageicon;
impor javax.swing.jbutton;
impor javax.swing.jfilechooser;
impor javax.swing.jtoolbar;
impor javax.swing.jwindow;
impor javax.swing.filechooser.filenameextensionfilter;
impor javax.swing.filechooser.filesystemView;
Skrawi kelas publik {
public static void main (string [] args) {
Eventqueue.invokelater (runnable baru () {
@Mengesampingkan
public void run () {
mencoba {
ScreenshotWindow SSW = ScreenshotWindow baru ();
ssw.setvisible (true);
} catch (awtException e) {
e.printstacktrace ();
}
}
});
}
}
/*
* 截图窗口
*/
Kelas ScreenshotWindow Memperluas JWindow
{
Private Int Orgx, Orgy, EndX, Endy;
gambar buferedImage pribadi = null;
private bufferedImage Tempimage = null;
saveImage bufferedImage pribadi = null;
Alat PrivateWindow Private = NULL;
public ScreenshotWindow () melempar awtexception {
// 获取屏幕尺寸
Dimensi d = toolkit.getDefaultToolKit (). Getscreensize ();
this.setbounds (0, 0, D.Width, D.Height);
// 截取屏幕
Robot robot = robot baru ();
gambar = robot.createScreencapture (persegi panjang baru (0, 0, d.width, d.height));
this.addmouseListener (mouseadapter baru () {
@Mengesampingkan
public void mousepressed (mouseEvent e) {
// 鼠标松开时记录结束点坐标 , 并隐藏操作窗口
orgx = e.getx ();
pesta = e.gety ();
if (tools! = null) {
tools.setVisible (false);
}
}
@Mengesampingkan
mousereleased public void (MouseEvent E) {
// 鼠标松开时 , 显示操作窗口
if (tools == null) {
tools = new Toolswindow (skrementHotWindow.tipis, e.getx (), e.gety ());
}kalau tidak{
tools.setLocation (e.getx (), e.gety ());
}
tools.setVisible (true);
tools.tofront ();
}
});
this.addmouseMotionListener (mousemotionAdapter baru () {
@Mengesampingkan
public void mousedragged (mouseEvent e) {
// 鼠标拖动时 , 记录坐标并重绘窗口
endx = e.getx ();
endy = e.gety ();
// 临时图像 , 用于缓冲屏幕区域放置屏幕闪烁
Gambar tempiMage2 = createImage (skrementHotWindow.this.getWidth (), skrementhotwindow.this.getHeight ());
Grafik g = tempimage2.getGraphics ();
G.DrawImage (Tempimage, 0, 0, null);
int x = math.min (orgx, endx);
int y = math.min (pesta, endy);
int lebar = math.abs (endx - orgx) +1;
Int Height = Math.ABS (Endy - Orgy) +1;
// 加上 1 防止 Lebar 或 Tinggi0
G.SetColor (Color.Blue);
G.Drawrect (x-1, y-1, lebar+1, tinggi+1);
// 减 1 加 1 都了防止图片矩形框覆盖掉
saveImage = image.getSubimage (x, y, lebar, tinggi);
G.DrawImage (SaveImage, X, Y, NULL);
ScreenshotWindow.this.getGraphics (). DrawImage (Tempimage2,0,0, ScreenshotWindow.THIS);
}
});
}
@Mengesampingkan
public void cat (grafik g) {
Rescaleop ro = rescaleop baru (0,8f, 0, null);
tempimage = ro.filter (gambar, null);
G.DrawImage (Tempimage, 0, 0, ini);
}
// 保存图像到文件
public void saveImage () melempar ioException {
JFilechooser JFC = JFilechooser baru ();
jfc.setDialogtitle ("保存");
// 文件过滤器 , 用户过滤可选择文件
FilenameExtensionFilter filter = new filenextensionfilter ("jpg", "jpg");
jfc.setFileFilter (filter);
// 初始化一个默认文件(此文件会生成到桌面上)
SimpleDateFormat SDF = new SimpleDateFormat ("yyyymmddhhmmss");
String filename = sdf.format (tanggal baru ());
File FilePath = FileSySyStemView.GetFileSyStemView (). GetHomEdirectory ();
File defaultFile = file baru (filePath + file.separator + fileName + ".jpg");
jfc.setselectedFile (defaultFile);
int flag = jfc.showsavedialog (ini);
if (flag == jFilechooser.approve_option) {
File file = jfc.getSelectedFile ();
String path = file.getPath ();
// 检查文件后缀 , 放置用户忘记输入后缀或者输入不正确的后缀
if (! (path.endswith (". jpg") || path.endswith (". jpg"))) {
path+= ". jpg";
}
// 写入文件
ImageIO.Write (SaveImage, "JPG", File Baru (Path));
System.exit (0);
}
}
}
/*
* 操作窗口
*/
Kelas Toolswindow Memperluas JWindow
{
orang tua screenshotwindow pribadi;
Public Toolswindow (ScreenshotWindow Parent, int x, int y) {
this.parent = Parent;
this.init ();
this.setlocation (x, y);
this.pack ();
this.setVisible (true);
}
private void init () {
this.setLayout (borderlayout baru ());
Jtoolbar toolbar = jtoolbar baru ("java 截图");
// 保存按钮
Jbutton savebutton = jbutton baru (gambar baru ("gambar/save.gif"));
savebutton.addactionListener (actionListener baru () {
@Mengesampingkan
public void actionPerformed (actionEvent e) {
mencoba {
Parent.SaveImage ();
} catch (ioException e1) {
e1.printstacktrace ();
}
}
});
toolbar.add (savebutton);
// 关闭按钮
Jbutton closeButton = jbutton baru (gambar baru ("gambar/close.gif"));
closeButton.addactionListener (ActionListener baru () {
@Mengesampingkan
public void actionPerformed (actionEvent e) {
System.exit (0);
}
});
toolbar.add (closeButton);
this.add (toolbar, borderlayout.north);
}
}