java实现屏幕取色

类别:Java 点击:0 评论:0 推荐:

声明:
本文核心代码选择自langzi84的blog请看以下链接
http://dev.csdn.net/article/44/article/44/44529.shtm
http://blog.csdn.net/langzi84/archive/2004/10/21/146331.aspx

代码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 screen's color to the JPanel's 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;
   }
 
  }
 

本文地址:http://com.8s8s.com/it/it14243.htm