我想製作一個應用程序,它會顯示我的鼠標指向哪種顏色,我不是指在我自己的應用程序中,而是在任何屏幕上的窗口中的任何地方,有點像我的鼠標指針旁邊的標籤,它顯示確切的顏色。鼠標顯示顏色
我是一個Java開發者,但我不認爲這會在Java中我正在想也許做我需要某種形式的腳本,但我不知道任何幫助將是非常appriciated
我想製作一個應用程序,它會顯示我的鼠標指向哪種顏色,我不是指在我自己的應用程序中,而是在任何屏幕上的窗口中的任何地方,有點像我的鼠標指針旁邊的標籤,它顯示確切的顏色。鼠標顯示顏色
我是一個Java開發者,但我不認爲這會在Java中我正在想也許做我需要某種形式的腳本,但我不知道任何幫助將是非常appriciated
該解決方案由兩個部分組成:
第1部分:檢索顏色:
Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
Color color = new Robot().getPixelColor(mouseLocation.x, mouseLocation.y);
第2部分:獲得顏色名稱:
你可以得到一個列表許多顏色和他們的名字從Wikipedia's List of colors。給定維基百科上的數據,您可以在Java中創建映射。
也許您可以從幾種顏色開始,爲未知顏色提供通用的十六進制表示,例如#rrggbb
。
取您的選擇:http://rosettacode.org/wiki/Color_of_a_screen_pixel
有一個Java/AWT示例,AutoHotKey是一個簡單的腳本選項。
第二個C示例顯示了您需要的3個API調用GetDC/GetCursorPos/GetPixel
及其支持代碼,這些代碼可以從大多數爲Windows編譯的語言中使用。
這裏是可運行的例子,
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()));
}
}
感謝您的代碼,我試圖運行通過這樣的循環,印刷的顏色,而是它正在改變有時當我移動鼠標但主要是它保持不變,即使當我在不同的顏色 – yahh 2011-04-23 14:02:38
你可能睡覺的線程,而不是一個循環,我想這可能是一個時間問題。 – jumperchen 2011-04-24 01:17:24