java實現螢幕取色

來源:互聯網
上載者:User

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

  }

  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.