Java a
复制代码代码如下 :
패키지 com.hongyuan.test;
java.awt.awxception import;
java.awt.borderlayout import;
import java.awt.color;
java.awt.dimension import;
java.awt.eventqueue import;
java.awt.flowlayout 가져 오기;
java.awt.graphics 가져 오기;
import java.awt.image;
import java.awt.rectangle;
java.awt.robot import;
java.awt.toolkit import;
import java.awt.event.actionevent;
import java.awt.event.actionListener;
import java.awt.event.mouseadapter;
java.awt.event.mouseevent import;
java.awt.event.mouseMotionAdapter를 가져옵니다.
java.awt.image.bufferedimage import;
java.awt.image.rescaleop import;
import java.io.file;
import java.io.ioexception;
import java.text.simpledateformat;
import java.util.date;
import javax.imageio.imageio;
import javax.swing.imageicon;
import javax.swing.jbutton;
import javax.swing.jfilechooser;
import javax.swing.jtoolbar;
import javax.swing.jwindow;
import javax.swing.filechooser.filenameextensionFilter;
import javax.swing.filechooser.filesystemview;
공개 수업 스크린 샷 {
public static void main (String [] args) {
eventqueue.invokelater (new Runnable () {
@보수
public void run () {
노력하다 {
ScreenshotWindow SSW = 새로운 스크린 샷 Window ();
ssw.setvisible (true);
} catch (awtexception e) {
e.printstacktrace ();
}
}
});
}
}
/*
* 截图窗口
*/
클래스 Screenshotwindow는 Jwindow를 확장합니다
{
개인 int orgx, 난교, endx, endy;
비공개 bufferedimage image = null;
개인 BufferedImage tempimage = null;
개인 BufferedImage SaveImage = NULL;
Private ToolSwindow 도구 = 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 (new MouseAdapter () {
@보수
공공 보이드 무성 (mouseevent e) {
// 鼠标松开时记录结束点坐标, 鼠标松开时记录结束点坐标
orgx = e.getx ();
난교 = e.gety ();
if (도구! = null) {
도구를 세트 Visible (false);
}
}
@보수
공공 void mouserEleled (mouseevent e) {
// 鼠标松开时, 鼠标松开时
if (도구 == null) {
Tools = New ToolSwindow (ScreenshotWindow.this, e.getx (), e.gety ());
}또 다른{
도구 .setLocation (e.getx (), e.gety ());
}
도구 .setvisible (true);
도구 .tofront ();
}
});
this.addmouseMotionListener (new MouseMotionAdapter () {
@보수
공공 void mousedragged (mouseevent e) {
// 鼠标拖动时, 鼠标拖动时
endx = e.getx ();
endy = e.gety ();
// 临时图像, 临时图像
image tempimage2 = createImage (screenshotwindow.this.getWidth (), screenshotwindow.this.getheight ());
그래픽 g = tempimage2.getGraphics ();
G.DrawImage (Tempimage, 0, 0, NULL);
int x = math.min (orgx, endx);
int y = math.min (난교, 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.this.getGraphics (). DrawImage (Tempimage2,0,0, ScreenshotWindow.this);
}
});
}
@보수
공개 공허 페인트 (그래픽 g) {
rescaleop ro = 새로운 rescaleop (0.8f, 0, null);
tempimage = ro.filter (image, null);
G.DrawImage (Tempimage, 0, 0, this);
}
// 保存图像到文件
public void saveImage ()는 ioexception {
JFILECHOOSER JFC = NEW JFILECHOOSER ();
jfc.setDialogTitle ( "保存");
// 文件过滤器, 文件过滤器
filenameextensionFilter Filter = New FilEnameExtensionFilter ( "JPG", "JPG");
jfc.setfilefilter (필터);
// 初始化一个默认文件 (初始化一个默认文件)
simpledateformat sdf = 새로운 simpledateformat ( "yyyymmddhhmmss");
문자열 filename = sdf.format (new date ());
File FilePath = FileSystemView.getFilesyStemView (). gethomeDirectory ();
file defaultFile = 새 파일 (FilePath + file.separator + filename + ".jpg");
jfc.setselectedfile (defaultFile);
int flag = jfc.showsavedialog (this);
if (flag == jfileChooser.Approve_Option) {
파일 파일 = jfc.getSelectedFile ();
문자열 path = file.getPath ();
// 检查文件后缀, 检查文件后缀
if (!
경로+= ". jpg";
}
// 写入文件
imageio.write (saveImage, "jpg", 새 파일 (path));
System.exit (0);
}
}
}
/*
* 操作窗口
*/
Class Toolswindow는 Jwindow를 확장합니다
{
비공개 스크린 샷 Window 부모;
Public Toolswindow (ScreenshotWindow 부모, int x, int y) {
this.parent = 부모;
this.init ();
this.setLocation (x, y);
this.pack ();
this.set -Visible (true);
}
개인 void init () {
this.setLayout (New BorderLayout ());
jtoolbar 도구 모음 = New Jtoolbar ( "Java 截图");
// 保存按钮
JBUTTON SAVEBUTTON = NEW JBUTTON (New ImageIcon ( "images/save.gif"));
SaveButton.addactionListener (New ActionListener () {
@보수
public void 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 () {
@보수
public void actionperformed (ActionEvent e) {
System.exit (0);
}
});
Toolbar.add (CloseButton);
this.add (도구 모음, BorderLayout.north);
}
}