<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 閱讀(60) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产成人久久AV免费| 亚洲精品欧美综合四区| 一级一级一级毛片免费毛片| 色吊丝永久在线观看最新免费| 色老板亚洲视频免在线观| 亚州免费一级毛片| 亚洲中文字幕无码av在线| 日韩精品内射视频免费观看| 亚洲一区二区三区四区在线观看 | 久久久免费的精品| 亚洲AV人人澡人人爽人人夜夜| 精品国产污污免费网站| 18禁无遮挡无码网站免费| 亚洲国产系列一区二区三区| 成年女人午夜毛片免费视频| 亚洲精品精华液一区二区| 拔擦拔擦8x华人免费久久| 理论亚洲区美一区二区三区| 国产一级一片免费播放i| 成人一级免费视频| 亚洲人成人网站色www| 久久久精品免费视频| 亚洲人妖女同在线播放| 免费看美女被靠到爽的视频| 女人裸身j部免费视频无遮挡| 亚洲乱码国产一区三区| 最近中文字幕免费mv在线视频| 亚洲一区二区三区无码国产| 四虎影院永久免费观看| a级毛片免费全部播放| 亚洲欧洲国产成人精品| 国产高清视频在线免费观看| jizz免费一区二区三区| 亚洲综合小说久久另类区| 色www永久免费视频| 成人无码视频97免费| 亚洲国产成人久久三区| 亚洲乱码中文字幕综合234| 99视频有精品视频免费观看| 亚洲变态另类一区二区三区| 亚洲国产无套无码av电影|