<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    /* 主要使用的是java.util.Robot類來捕獲屏幕,
    * 可以實現對屏幕一個矩形區域的捕獲,通過這個類,
    * 我們也可以實現一個遠程桌面控制的程序
    */

    package com.qiu.util;
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import javax.imageio.*;
    import java.io.*;


    public class ScreenCapture {
    //test main
    public static void main(String[] args) throws Exception{
    ?? String userdir = System.getProperty("user.dir");
    ?? File tempFile = new File("d:","temp.png");
    ?? ScreenCapture capture = ScreenCapture.getInstance();
    ?? capture.captureImage();??
    ?? JFrame frame = new JFrame();
    ?? JPanel panel = new JPanel();
    ?? panel.setLayout(new BorderLayout());
    ?? JLabel imagebox = new JLabel();
    ?? panel.add(BorderLayout.CENTER,imagebox);??
    ?? imagebox.setIcon(capture.getPickedIcon());
    ?? capture.saveToFile(tempFile);
    ?? capture.captureImage();
    ?? imagebox.setIcon(capture.getPickedIcon());
    ?? frame.setContentPane(panel);
    ?? frame.setSize(400,300);
    ?? frame.show();
    ?? System.out.println("Over");
    }

    private ScreenCapture() {
    ??
    ?? try{
    ??? robot = new Robot();
    ?? }
    ?? catch(AWTException e) {
    ??? System.err.println("Internal Error: " + e);
    ??? e.printStackTrace();
    ?? }??
    ?? JPanel cp = (JPanel)dialog.getContentPane();
    ?? cp.setLayout(new BorderLayout());??
    ?? labFullScreenImage.addMouseListener(new MouseAdapter() {
    ???? public void mouseReleased(MouseEvent evn) {
    ?????? isFirstPoint = true;
    ?????? pickedImage = fullScreenImage.getSubimage(recX,recY,recW,recH);
    ?????? dialog.setVisible(false);?????
    ???? }
    ??? });
    ???
    ?? labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter() {
    ???? public void mouseDragged(MouseEvent evn) {
    ????? if(isFirstPoint) {
    ?????? x1 = evn.getX();
    ?????? y1 = evn.getY();
    ?????? isFirstPoint = false;??
    ????? }
    ????? else {
    ?????? x2 = evn.getX();
    ?????? y2 = evn.getY();
    ?????? int maxX = Math.max(x1,x2);
    ?????? int maxY = Math.max(y1,y2);
    ?????? int minX = Math.min(x1,x2);
    ?????? int minY = Math.min(y1,y2);
    ?????? recX = minX;
    ?????? recY = minY;
    ?????? recW = maxX-minX;
    ?????? recH = maxY-minY;
    ?????? labFullScreenImage.drawRectangle(recX,recY,recW,recH);????
    ????? }
    ???? }
    ????
    ???? public void mouseMoved(MouseEvent e) {
    ????? labFullScreenImage.drawCross(e.getX(),e.getY());
    ???? }
    ??? });
    ???
    ?? cp.add(BorderLayout.CENTER,labFullScreenImage);
    ?? dialog.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
    ?? dialog.setAlwaysOnTop(true);
    ?? dialog.setMaximumSize(
    ??? Toolkit.getDefaultToolkit().getScreenSize());
    ?? dialog.setUndecorated(true);
    ?? dialog.setSize(dialog.getMaximumSize());
    ?? dialog.setModal(true);
    }
    //Singleton Pattern
    public static ScreenCapture getInstance() {
    ?? return defaultCapturer;
    }
    /**捕捉全屏慕*/
    public Icon captureFullScreen() {
    ?? fullScreenImage = robot.createScreenCapture(new Rectangle(
    ??? Toolkit.getDefaultToolkit().getScreenSize()));
    ?? ImageIcon icon = new ImageIcon(fullScreenImage);
    ?? return icon;
    }
    /**捕捉屏幕的一個矯形區域
    ?? */
    public void captureImage() {
    ?? fullScreenImage = robot.createScreenCapture(new Rectangle(
    ??? Toolkit.getDefaultToolkit().getScreenSize()));
    ?? ImageIcon icon = new ImageIcon(fullScreenImage);
    ?? labFullScreenImage.setIcon(icon);??
    ?? dialog.setVisible(true);
    }
    /**得到捕捉后的BufferedImage*/
    public BufferedImage getPickedImage() {
    ?? return pickedImage;
    }
    /**得到捕捉后的Icon*/
    public ImageIcon getPickedIcon() {
    ?? return new ImageIcon(getPickedImage());
    }
    /**儲存為一個文件,為PNG格式
    ??*@deprecated
    ?? *replaced by saveAsPNG(File file)
    ?? **/
    @Deprecated
    public void saveToFile(File file) throws IOException{
    ?? ImageIO.write(getPickedImage(),defaultImageFormater,file);
    }
    /**儲存為一個文件,為PNG格式*/
    public void saveAsPNG(File file) throws IOException {
    ?? ImageIO.write(getPickedImage(),"png",file);
    }
    /**儲存為一個JPEG格式圖像文件*/
    public void saveAsJPEG(File file) throws IOException {
    ?? ImageIO.write(getPickedImage(),"JPEG",file);
    }

    /**寫入一個OutputStream*/
    public void write(OutputStream out) throws IOException{
    ?? ImageIO.write(getPickedImage(),defaultImageFormater,out);
    }

    //singleton design pattern
    private static ScreenCapture defaultCapturer = new ScreenCapture();
    private int x1,y1,x2,y2;
    private int recX,recY,recH,recW; //截取的圖像
    private boolean isFirstPoint?? = true;
    private BackgroundImage labFullScreenImage = new BackgroundImage();
    private Robot robot;
    private BufferedImage fullScreenImage;
    private BufferedImage pickedImage;
    private String defaultImageFormater = "png";
    private JDialog dialog = new JDialog();
    }

    /**顯示圖片的Label*/
    class BackgroundImage extends JLabel{
    public void paintComponent(Graphics g) {
    ?? super.paintComponent(g);
    ?? g.drawRect(x,y,w,h);
    ?? String area = Integer.toString(w)+" * "+ Integer.toString(h);
    ?? g.drawString(area,x+(int)w/2-15,y+(int)h/2);
    ?? g.drawLine(lineX,0,lineX,getHeight());
    ?? g.drawLine(0,lineY,getWidth(),lineY);
    }

    public void drawRectangle(int x,int y,int width,int height) {
    ?? this.x = x;
    ?? this.y = y;
    ?? h = height;
    ?? w = width;
    ?? repaint();
    }

    public void drawCross(int x,int y) {
    ?? lineX = x;
    ?? lineY = y;
    ?? repaint();
    }

    int lineX,lineY;
    int x,y,h,w;
    }

    posted on 2007-05-28 00:54 jadmin 閱讀(56) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 热久久精品免费视频| 亚洲成av人片在www鸭子| 国产免费资源高清小视频在线观看| 很黄很污的网站免费| 美女被免费网站在线视频免费| 亚洲精品在线电影| 亚洲大成色www永久网站| 国产一级一片免费播放| 国产成人免费爽爽爽视频| 少妇人妻偷人精品免费视频| 一级做性色a爰片久久毛片免费| 亚洲综合精品伊人久久| 亚洲不卡1卡2卡三卡2021麻豆| 久久亚洲精品成人综合| 亚洲亚洲人成综合网络| 亚洲不卡AV影片在线播放| 天天天欲色欲色WWW免费| 无码精品A∨在线观看免费 | 国产免费直播在线观看视频| 综合在线免费视频| 1000部拍拍拍18免费网站| 69视频在线观看高清免费| 久久久精品午夜免费不卡| 国产在线精品一区免费香蕉| 黄色网址免费在线观看| 中国好声音第二季免费播放| 亚洲免费在线观看| 亚洲精品黄色视频在线观看免费资源| 免费国产黄网站在线看| 美女黄网站人色视频免费| 黄色一级毛片免费看| 成人a毛片免费视频观看| 边摸边脱吃奶边高潮视频免费| 精品国产亚洲一区二区三区在线观看 | 91高清免费国产自产| 91精品免费不卡在线观看| 中文字幕免费观看| 久草视频在线免费| 在线免费观看色片| 国产嫩草影院精品免费网址| 免费a级毛片18以上观看精品|