2011-04-23 95 views
1

我想製作一個應用程序,它會顯示我的鼠標指向哪種顏色,我不是指在我自己的應用程序中,而是在任何屏幕上的窗口中的任何地方,有點像我的鼠標指針旁邊的標籤,它顯示確切的顏色。鼠標顯示顏色

example

我是一個Java開發者,但我不認爲這會在Java中我正在想也許做我需要某種形式的腳本,但我不知道任何幫助將是非常appriciated

回答

4

該解決方案由兩個部分組成:

第1部分:檢索顏色:

Point mouseLocation = MouseInfo.getPointerInfo().getLocation(); 
Color color = new Robot().getPixelColor(mouseLocation.x, mouseLocation.y); 

第2部分:獲得顏色名稱:

你可以得到一個列表許多顏色和他們的名字從Wikipedia's List of colors。給定維基百科上的數據,您可以在Java中創建映射。

也許您可以從幾種顏色開始,爲未知顏色提供通用的十六進制表示,例如#rrggbb

1

取您的選擇:http://rosettacode.org/wiki/Color_of_a_screen_pixel

有一個Java/AWT示例,AutoHotKey是一個簡單的腳本選項。

第二個C示例顯示了您需要的3個API調用GetDC/GetCursorPos/GetPixel及其支持代碼,這些代碼可以從大多數爲Windows編譯的語言中使用。

2

這裏是可運行的例子,

import java.awt.AWTException; 
import java.awt.Color; 
import java.awt.MouseInfo; 
import java.awt.Point; 
import java.awt.Robot; 
public class Main { 

public static String getHexString(int rgb) { 
    String hexString = Integer.toHexString(rgb); 
    hexString = hexString.length() > 1 ? hexString : "0" + hexString; 
    return hexString; 
} 

public static void main(String[] a) throws AWTException { 
    Point mouseLocation = MouseInfo.getPointerInfo().getLocation(); 
    Color color = new Robot().getPixelColor(mouseLocation.x, 
      mouseLocation.y); 
    System.out.println(getHexString(color.getRed()) 
      + getHexString(color.getGreen()) 
      + getHexString(color.getBlue())); 
} 

}

+0

感謝您的代碼,我試圖運行通過這樣的循環,印刷的顏色,而是它正在改變有時當我移動鼠標但主要是它保持不變,即使當我在不同的顏色 – yahh 2011-04-23 14:02:38

+1

你可能睡覺的線程,而不是一個循環,我想這可能是一個時間問題。 – jumperchen 2011-04-24 01:17:24