亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java實現區域內屏幕截圖示例

2019-11-26 15:33:14
字體:
來源:轉載
供稿:網友

這是一個java版的截圖程序

復制代碼 代碼如下:

package 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;
import 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.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
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 class ScreenShotTest {

 public static void main(String[] args) {

  EventQueue.invokeLater(new Runnable() { 
   @Override
   public void run() {
    try {
     ScreenShotWindow ssw=new ScreenShotWindow();
     ssw.setVisible(true);
    } catch (AWTException e) {
     e.printStackTrace();
    }
   }
  });
 }

}
/*
 * 截圖窗口
 */
class ScreenShotWindow extends JWindow

 private int orgx, orgy, endx, endy;
    private BufferedImage image=null;
    private BufferedImage tempImage=null;
    private BufferedImage saveImage=null;

    private ToolsWindow tools=null;

 public ScreenShotWindow() throws AWTException{
   //獲取屏幕尺寸
   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
   this.setBounds(0, 0, d.width, d.height);

   //截取屏幕
   Robot robot = new Robot();
   image = robot.createScreenCapture(new Rectangle(0, 0, d.width,d.height));

   this.addMouseListener(new MouseAdapter() {
    @Override
   public void mousePressed(MouseEvent e) {
    //鼠標松開時記錄結束點坐標,并隱藏操作窗口
             orgx = e.getX();
             orgy = e.getY();

             if(tools!=null){
              tools.setVisible(false);
             }
   }
   @Override
   public void mouseReleased(MouseEvent e) {
    //鼠標松開時,顯示操作窗口
    if(tools==null){
     tools=new ToolsWindow(ScreenShotWindow.this,e.getX(),e.getY());
    }else{
     tools.setLocation(e.getX(),e.getY());
    }
    tools.setVisible(true);
    tools.toFront();
   }
  });

   this.addMouseMotionListener(new MouseMotionAdapter() {

   @Override
   public void mouseDragged(MouseEvent e) {
    //鼠標拖動時,記錄坐標并重繪窗口
                endx = e.getX();
                endy = e.getY();

                //臨時圖像,用于緩沖屏幕區域放置屏幕閃爍
                Image tempImage2=createImage(ScreenShotWindow.this.getWidth(),ScreenShotWindow.this.getHeight());
                Graphics 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防止width或height0
                g.setColor(Color.BLUE);
                g.drawRect(x-1, y-1, width+1, height+1);
                //減1加1都了防止圖片矩形框覆蓋掉
                saveImage = image.getSubimage(x, y, width, height);
                g.drawImage(saveImage, x, y, null);

                ScreenShotWindow.this.getGraphics().drawImage(tempImage2,0,0,ScreenShotWindow.this);
   }
  });
 }

    @Override
    public void paint(Graphics g) {
        RescaleOp ro = new RescaleOp(0.8f, 0, null);
        tempImage = ro.filter(image, null);
        g.drawImage(tempImage, 0, 0, this);
    }
    //保存圖像到文件
 public void saveImage() throws IOException {
  JFileChooser jfc=new JFileChooser();
  jfc.setDialogTitle("保存");

  //文件過濾器,用戶過濾可選擇文件
  FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG", "jpg");
  jfc.setFileFilter(filter);

  //初始化一個默認文件(此文件會生成到桌面上)
  SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss");
     String fileName = sdf.format(new Date());
     File filePath = FileSystemView.getFileSystemView().getHomeDirectory();
     File defaultFile = new File(filePath + File.separator + fileName + ".jpg");
     jfc.setSelectedFile(defaultFile);

  int flag = jfc.showSaveDialog(this);
  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",new File(path));
   System.exit(0);
  }
 }
}
/*
 * 操作窗口
 */
class ToolsWindow extends JWindow
{
 private ScreenShotWindow parent;

 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(new BorderLayout());
  JToolBar toolBar=new JToolBar("Java 截圖");

  //保存按鈕
  JButton saveButton=new JButton(new ImageIcon("images/save.gif"));
  saveButton.addActionListener(new ActionListener() { 
   @Override
   public void actionPerformed(ActionEvent e) {
    try {
     parent.saveImage();
    } catch (IOException e1) {
     e1.printStackTrace();
    }
   }
  });
  toolBar.add(saveButton);

  //關閉按鈕
  JButton closeButton=new JButton(new ImageIcon("images/close.gif"));
  closeButton.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    System.exit(0);
   }
  });
  toolBar.add(closeButton);

  this.add(toolBar,BorderLayout.NORTH);
 }
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品男人爽免费视频1| 欧美极品第一页| xvideos成人免费中文版| 国产亚洲精品日韩| 九九热r在线视频精品| 亚洲电影免费观看高清完整版在线| 欧美在线一级视频| 日韩精品免费在线视频观看| 午夜精品福利视频| 日韩中文字幕免费视频| 日本精品久久久久影院| 日韩中文字幕免费视频| 国产精品电影在线观看| 九九热精品视频国产| 最近2019年好看中文字幕视频| 成人免费高清完整版在线观看| 欧美激情xxxxx| 国产精品久久久久久av福利软件| 久久久久久久亚洲精品| 福利视频导航一区| 欧美在线xxx| 久久香蕉国产线看观看网| 亚洲欧洲黄色网| 国产精品久久久久久久久久尿| 国模私拍一区二区三区| 亚洲网站视频福利| 中文字幕视频在线免费欧美日韩综合在线看| 人九九综合九九宗合| 国产在线日韩在线| 国产视频在线一区二区| 欧美在线观看网站| 国产精品va在线| 欧美黑人性猛交| 亚洲精品中文字幕有码专区| 最近2019中文字幕大全第二页| 亚洲精品白浆高清久久久久久| 亚洲成人久久久久| 欧美另类第一页| 国产精品电影久久久久电影网| 精品爽片免费看久久| 992tv成人免费视频| 日韩黄色在线免费观看| 日韩av在线一区二区| 欧美大全免费观看电视剧大泉洋| 精品国内产的精品视频在线观看| 最近2019好看的中文字幕免费| 亚洲白虎美女被爆操| 国产在线精品成人一区二区三区| 国产精品美女免费| 成人免费在线网址| 欧美电影免费观看网站| 97精品久久久| 在线免费看av不卡| 国产精品网红直播| 成人久久一区二区| 日本精品视频网站| 欧美中文在线观看| 成人黄色免费在线观看| 欧美激情精品久久久久久黑人| 久久影视三级福利片| 91精品国产免费久久久久久| 在线丨暗呦小u女国产精品| 亚洲激情久久久| 欧美肥老妇视频| 国产成+人+综合+亚洲欧美丁香花| 国产精品视频一区二区三区四| 成人妇女免费播放久久久| 亚洲精品久久久久久下一站| 亚洲第一福利网站| 精品一区二区三区四区在线| 色悠久久久久综合先锋影音下载| 亚洲欧美中文字幕| 色偷偷av一区二区三区| 国产自产女人91一区在线观看| 深夜福利日韩在线看| 国产精品高潮呻吟久久av无限| 欧美高清理论片| 欧美日韩亚洲视频| 97精品国产97久久久久久| 亚洲综合第一页| 国产成人精品久久二区二区| 国产成人精品午夜| 欧美xxxx14xxxxx性爽| 精品亚洲一区二区| 久久久女人电视剧免费播放下载| 亚洲综合大片69999| 精品国内自产拍在线观看| 欧美黄色片免费观看| 日韩av影片在线观看| 一区二区三区四区精品| 久久久久中文字幕2018| 欧美乱大交xxxxx另类电影| 成人免费在线视频网站| 国产精品美女视频网站| 亚洲国产精品成人精品| 国产精品v片在线观看不卡| 亚洲高清在线观看| 日韩av电影在线播放| 欧洲美女免费图片一区| 亚洲色图偷窥自拍| 国产日产欧美精品| 欧美裸体视频网站| 91视频国产高清| 97国产精品免费视频| 亚洲国产成人在线视频| 欧美一区二区三区免费观看| 国产精品久久久久久久久久尿| 欧美亚洲免费电影| 97香蕉久久超级碰碰高清版| 日韩专区在线播放| 国产91ⅴ在线精品免费观看| 久久久999精品| 国产主播欧美精品| 日韩在线观看免费全集电视剧网站| 日本高清视频精品| 亚洲男人天堂手机在线| 久久综合亚洲社区| 亚洲国产精品va| 自拍偷拍亚洲欧美| 久久在线观看视频| 欧美激情第99页| 国产亚洲在线播放| 欧洲日本亚洲国产区| 成人福利在线观看| 97国产精品久久| 久久精品99久久香蕉国产色戒| 精品亚洲国产成av人片传媒| 国产欧美一区二区三区久久| 国产综合在线看| 亚洲成人a级网| 中文字幕自拍vr一区二区三区| 成人有码视频在线播放| 国产自产女人91一区在线观看| 亚洲精品永久免费精品| 91精品国产乱码久久久久久久久| 日本不卡视频在线播放| 日本精品一区二区三区在线| 日韩性生活视频| 一区二区三区视频免费在线观看| 亚洲成人免费在线视频| 九九九热精品免费视频观看网站| 国产精品激情自拍| 久久久av电影| 91精品久久久久久久久中文字幕| 精品视频在线导航| 色婷婷av一区二区三区久久| 国模私拍一区二区三区| 亚洲欧美国产va在线影院| 国产亚洲欧美aaaa| 中文字幕国产精品久久| 国产一区二区三区视频免费| 亚洲日本中文字幕免费在线不卡| 一区二区欧美在线| 97在线观看免费高清| 日本久久91av| 国产91精品久久久久久| 亚洲欧美日韩精品久久亚洲区| 久久国产天堂福利天堂| 欧美成人精品在线| 亚洲理论片在线观看| 色噜噜亚洲精品中文字幕| 亚洲日韩欧美视频| 欧美亚洲国产视频| 伊人男人综合视频网|