您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

java实现屏幕取色

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   代码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;

  }

  }