网页功能: 加入收藏 设为首页 网站搜索  
java实现屏幕取色
发表日期:2004-10-25作者:[转贴] 出处:CSDN  

本文核心代码选择自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;
   }
 
  }
 

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 java实现屏幕取色
本类热点文章
  Java读取文件中含有中文的解决办法
  简单加密/解密方法包装, 含encode(),de..
  EJB 3.0规范全新体验
  让Java程序带着JRE一起上路
  java简单的获取windows系统网卡mac地址
  抢先体验"野马"J2SE6.0
  Java连接各种数据库的实例
  JAVA的XML编程实例解析
  Java学习从入门到精通(附FAQ)
  新手必读:Java学习的捷径
  构架Linux环境下Java开发环境
  Java编程思想(24)
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2019 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00958