java實現(xiàn)屏幕取色

字號:


    代碼1。在屏幕上輸出當前鼠標所在的屏幕顏色。
    import java.awt.*;
    public class PickColor {
    public static void main(String[] args) {
    PickColor pc = new PickColor();
    Color color = pc.pickColor();
    System.out.println("color = "+color);
    }
    public Color pickColor() {
    Color pixel = new Color(0,0,0);
    Robot robot = null;
    Point mousepoint;
    int R,G,B;
    // MouseInfo mouseinfo = new MouseInfo();
    try {
    robot = new Robot();
    } catch (AWTException e) {
    e.printStackTrace();
    System.exit(1);
    }
    mousepoint = MouseInfo.getPointerInfo().getLocation();
    pixel = robot.getPixelColor(mousepoint.x,mousepoint.y);
    R = pixel.getRed();
    G = pixel.getGreen();
    return pixel;
    }
    }
    代碼2。使用一個GUI,輸出當前鼠標所在的屏幕顏色,并改變GUI的背景色。
    // create by kin 2004/10/24 refer to http://dev.csdn.net/article/44/44529.shtm
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class PickColor2 extends JFrame {
    public static void main(String[] args) {
    PickColor2 pc = new PickColor2();
    //Color color = pc.pickColor();
    //System.out.println("color = "+color);
    }
    public PickColor2 () {
    super("Pick Color");
    setSize(200,200);
    JPanel p =new JPanel();
    getContentPane().add(p);
    // this mouse listener only is limited in the java desktop region
    p.addMouseMotionListener(new PickColorMouesMotionListener(p));
    // this thread is really effected!
    new PickColorThread(p).start();
    setVisible(true);
    }
    /**Mouse Motion Listener,when mouse are moving, then set corresping screens color to the JPanels background Color. */
    class PickColorMouesMotionListener extends MouseMotionAdapter {
    private JPanel p = null;
    PickColorMouesMotionListener(JPanel p) {
    this.p = p;
    }
    public void mouseMoved(MouseEvent e) {
    Color c = pickColor();
    this.p.setBackground(c);
    //System.out.println (c);
    }
    }
    class PickColorThread extends Thread {
    private JPanel p = null;
    PickColorThread(JPanel p){
    this.p=p;
    }
    public void run () {
    while (true) {
    try {
    Thread.currentThread().sleep(10);
    Color c = pickColor();
    this.p.setBackground(c);
    // try change the foreground when background s r <= 50 or g <= 50 or b <= 50
    Graphics g = p.getGraphics ();
    if (c.getRed() <=50 || c.getGreen() <= 50 || c.getBlue() <= 50) {
    g.setColor(Color.WHITE);
    } else {
    g.setColor(Color.BLACK);
    }
    g.drawString(c.toString(),0,100);
    g = null;
    //System.out.println (c);
    } catch (InterruptedException e) {
    e.printStackTrace();
    System.exit(1);
    }
    }
    }
    }
    /**Get Screen Color*/
    public Color pickColor() {
    Color pixel = new Color(0,0,0);
    Robot robot = null;
    Point mousepoint;
    int R,G,B;
    // MouseInfo mouseinfo = new MouseInfo();
    try {
    robot = new Robot();
    } catch (AWTException e) {
    e.printStackTrace();
    System.exit(1);
    }
    mousepoint = MouseInfo.getPointerInfo().getLocation();
    pixel = robot.getPixelColor(mousepoint.x,mousepoint.y);
    R = pixel.getRed();
    G = pixel.getGreen();
    return pixel;
    }
    }