这是一个 جافا 版的截图程序
复制代码代码如下:
حزمة 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.mouseevent ؛
استيراد 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 (New RunNable () {
@تجاوز
تشغيل الفراغ العام () {
يحاول {
screenshotwindow ssw = new screenshotwindow () ؛
ssw.setVisible (صحيح) ؛
} catch (awtexception e) {
E.PrintStackTrace () ؛
}
}
}) ؛
}
}
/*
* 截图窗口
*/
تمتد لقطة الشاشة
{
Private int orgx ، orgy ، endx ، endy ؛
صورة عازلة خاصة = فارغة ؛
remeredimage الخاص = خالية ؛
BufferEdImage private SaveImage = null ؛
أدوات Toolswindow الخاصة = فارغة ؛
لقطات الشاشة العامة () يلقي 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 () {
@تجاوز
الفراغ العام mousepressed (mouseevent e) {
// 鼠标松开时记录结束点坐标 , 并隐藏操作窗口
orgx = e.getx () ؛
orgy = e.gety () ؛
إذا (الأدوات! = فارغة) {
tools.setVisible (false) ؛
}
}
@تجاوز
الفراغ العام mouserelest (mouseevent e) {
// 鼠标松开时 , 显示操作窗口
if (أدوات == null) {
الأدوات = new Toolswindow (screenshotwindow.this ، e.getx () ، e.gety ()) ؛
}آخر{
Tools.setLocation (E.GetX () ، e.gety ()) ؛
}
tools.setVisible (صحيح) ؛
tools.tofront () ؛
}
}) ؛
this.addmouseMotionListener (mousemotionadapter () {new mousemotionadapter () {
@تجاوز
الفراغ العام mousedragged (mouseevent e) {
// 鼠标拖动时 , 记录坐标并重绘窗口
endx = e.getx () ؛
endy = e.gety () ؛
// 临时图像 , 用于缓冲屏幕区域放置屏幕闪烁
Image tempimage2 = createImage (screenshotwindow.this.getWidth () ، screenshotwindow.this.getheight ()) ؛
الرسومات g = regimage2.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 = math.abs (endy - orgy) +1 ؛
// 加上 1 防止 العرض 或 Hight0
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.tis.getGraphics (). DrawImage (tempimage2،0،0 ، screenshotwindow. this) ؛
}
}) ؛
}
@تجاوز
طلاء باطل عام (رسومات ز) {
Rescaleop ro = new Rescaleop (0.8f ، 0 ، null) ؛
tempimage = ro.filter (صورة ، فارغة) ؛
G.DrawImage (tempimage ، 0 ، 0 ، هذا) ؛
}
// 保存图像到文件
public void SaveImage () يلقي ioexception {
JfileChooser JFC = New JFileChooser () ؛
jfc.setDialogTitle ("保存") ؛
// 文件过滤器 , 用户过滤可选择文件
FilenameExtensionfilter filter = new FilenameExtensionFilter ("JPG" ، "JPG") ؛
jfc.setFileFilter (filter) ؛
// 初始化一个默认文件 (此文件会生成到桌面上)
SimplEdateFormat SDF = جديد spiStFormat ("Yyyymmddhhmmss") ؛
اسم ملف السلسلة = sdf.format (تاريخ جديد ()) ؛
File filePath = fileSystemView.getFilesystemView (). gethomedirectory () ؛
ملف defaultFile = ملف جديد (filepath + file.separator + 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 (".
PATH+= ". JPG" ؛
}
// 写入文件
imageio.write (SaveImage ، "JPG" ، ملف جديد (path)) ؛
System.exit (0) ؛
}
}
}
/*
* 操作窗口
*/
يمتد Toolswindow clash
{
لقطة الشاشة الخاصة.
Toolswindow العام (شاشة الشاشة الوالد ، int x ، int y) {
this.parent = الوالدين ؛
this.init () ؛
this.setLocation (x ، y) ؛
this.pack () ؛
this.setVisible (صحيح) ؛
}
void private init () {
this.setLayout (New BorderLayout ()) ؛
JToolbar Toolbar = New JToolbar ("Java 截图") ؛
// 保存按钮
JButton SaveButton = New JButton (New ImageIcon ("Images/Save.gif")) ؛
SaveButton.AddActionListener (New ActionListener () {
@تجاوز
الفراغ العام actionperformed (Actionevent e) {
يحاول {
Parent.Saveimage () ؛
} catch (ioException E1) {
e1.printstacktrace () ؛
}
}
}) ؛
Toolbar.Add (SaveButton) ؛
// 关闭按钮
JButton CloseButton = New JButton (New ImageIcon ("Images/close.gif")) ؛
CloseButton.AddActionListener (New ActionListener () {
@تجاوز
الفراغ العام actionperformed (Actionevent e) {
System.exit (0) ؛
}
}) ؛
شريط الأدوات. add (CloseButton) ؛
this.add (شريط الأدوات ، borderlayout.north) ؛
}
}