<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 一个人看的www免费在线视频| 久久久久久亚洲精品成人| 亚洲成在人线在线播放无码| 黄页网站在线看免费| 亚洲电影免费观看| 亚洲成人免费网站| 亚洲另类小说图片| 免费观看的毛片大全 | avtt亚洲天堂| 羞羞视频免费网站入口| 免费少妇a级毛片人成网| 污污免费在线观看| 亚洲午夜爱爱香蕉片| 东方aⅴ免费观看久久av | 美女视频黄视大全视频免费的| 在线免费观看韩国a视频| 日韩亚洲翔田千里在线| 亚洲第一区在线观看| 亚洲精品国产日韩无码AV永久免费网| 亚洲视频在线免费| 中文字幕无码一区二区免费| 久久精品国产亚洲av麻豆小说| 最刺激黄a大片免费网站| 亚洲视频无码高清在线| 国产成人一区二区三区免费视频| 九九免费观看全部免费视频| 亚洲真人无码永久在线| 99久热只有精品视频免费观看17| 91嫩草亚洲精品| 亚洲精品视频在线观看你懂的| 免费国产成人α片| 亚洲精品天堂在线观看| www.亚洲精品| 最刺激黄a大片免费网站| 久久久久亚洲AV无码去区首| 国产亚洲精品影视在线产品| 91在线老王精品免费播放| 亚洲爆乳成av人在线视菜奈实| 亚洲精品自产拍在线观看| 成人免费在线观看网站| 免费一级毛片在线播放视频免费观看永久 |