萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> java實現屏幕取色

java實現屏幕取色

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

  }

  }

copyright © 萬盛學電腦網 all rights reserved