ColorCat是俺寫的一個(gè)小工具,主要是用于獲取屏幕上任一顯示點(diǎn)的顏色,小巧的屏幕取色工具,能在屏幕上抓取任何你要的顏色,并轉(zhuǎn)成RGB和十六進(jìn)制顏色數(shù)值。
以前一直是用別人寫的屏幕取色工具。不過某一天偶然看到j(luò)dk里面java.awt.Robot有個(gè)方法getPixelColor(x, y)可以獲取屏幕某點(diǎn)坐標(biāo)的顏色值,當(dāng)時(shí)立即想到把它和之前寫的鼠標(biāo)鉤子http://www.aygfsteel.com/pengo/archive/2010/12/17/340938.html結(jié)合,花了點(diǎn)時(shí)間做出了這個(gè)屏幕取色工具軟件,并起了個(gè)名ColorCat。
代碼的實(shí)現(xiàn)很簡單,只需把鼠標(biāo)鉤子的實(shí)現(xiàn)http://www.aygfsteel.com/pengo/archive/2010/12/17/340938.html這篇文章的callback方法修改一下就行了,修改部分代碼如下,具體的源碼,需要的可以自己下載文章結(jié)尾的附件。
window下運(yùn)行效果:

目前只實(shí)現(xiàn)了最簡單的取色功能,等有時(shí)間,把調(diào)色板和顏色值轉(zhuǎn)換的功能也加上,讓這工具在以后的開發(fā)中更實(shí)用。如果其他人有好的功能建議,也可告訴我修改^_^。
運(yùn)行程序:ColorCat.jar (需要jre6)
源碼:ColorCat.src。
以前一直是用別人寫的屏幕取色工具。不過某一天偶然看到j(luò)dk里面java.awt.Robot有個(gè)方法getPixelColor(x, y)可以獲取屏幕某點(diǎn)坐標(biāo)的顏色值,當(dāng)時(shí)立即想到把它和之前寫的鼠標(biāo)鉤子http://www.aygfsteel.com/pengo/archive/2010/12/17/340938.html結(jié)合,花了點(diǎn)時(shí)間做出了這個(gè)屏幕取色工具軟件,并起了個(gè)名ColorCat。
代碼的實(shí)現(xiàn)很簡單,只需把鼠標(biāo)鉤子的實(shí)現(xiàn)http://www.aygfsteel.com/pengo/archive/2010/12/17/340938.html這篇文章的callback方法修改一下就行了,修改部分代碼如下,具體的源碼,需要的可以自己下載文章結(jié)尾的附件。
public LRESULT callback(int nCode, WPARAM wParam,
MOUSEHOOKSTRUCT info) {
if (nCode >= 0) {
int x = info.pt.x;
int y = info.pt.y;
textField_X.setText(String.valueOf(x));
textField_Y.setText(String.valueOf(y));
Color color = robot.getPixelColor(x, y);
switch (wParam.intValue()) {
case MainWindow.WM_MOUSEMOVE:
cruColor.setBackground(color);
break;
case MainWindow.WM_LBUTTONDOWN:
if (isColor) {
textField_Red.setText(String.valueOf(color
.getRed()));
textField_Green.setText(String.valueOf(color
.getGreen()));
textField_Blue.setText(String.valueOf(color
.getBlue()));
selectColor.setBackground(color);
String red = MainWindow.decimalToHex(color
.getRed());
String green = MainWindow.decimalToHex(color
.getGreen());
String blue = MainWindow.decimalToHex(color
.getBlue());
textField_Html
.setText("#" + red + green + blue);
}
break;
case MainWindow.WM_MBUTTONDOWN:
break;
case MainWindow.WM_MBUTTONUP:
break;
}
}
return lib.CallNextHookEx(hhk, nCode, wParam,
info.getPointer());
}
MOUSEHOOKSTRUCT info) {
if (nCode >= 0) {
int x = info.pt.x;
int y = info.pt.y;
textField_X.setText(String.valueOf(x));
textField_Y.setText(String.valueOf(y));
Color color = robot.getPixelColor(x, y);
switch (wParam.intValue()) {
case MainWindow.WM_MOUSEMOVE:
cruColor.setBackground(color);
break;
case MainWindow.WM_LBUTTONDOWN:
if (isColor) {
textField_Red.setText(String.valueOf(color
.getRed()));
textField_Green.setText(String.valueOf(color
.getGreen()));
textField_Blue.setText(String.valueOf(color
.getBlue()));
selectColor.setBackground(color);
String red = MainWindow.decimalToHex(color
.getRed());
String green = MainWindow.decimalToHex(color
.getGreen());
String blue = MainWindow.decimalToHex(color
.getBlue());
textField_Html
.setText("#" + red + green + blue);
}
break;
case MainWindow.WM_MBUTTONDOWN:
break;
case MainWindow.WM_MBUTTONUP:
break;
}
}
return lib.CallNextHookEx(hhk, nCode, wParam,
info.getPointer());
}
window下運(yùn)行效果:

目前只實(shí)現(xiàn)了最簡單的取色功能,等有時(shí)間,把調(diào)色板和顏色值轉(zhuǎn)換的功能也加上,讓這工具在以后的開發(fā)中更實(shí)用。如果其他人有好的功能建議,也可告訴我修改^_^。
運(yùn)行程序:ColorCat.jar (需要jre6)
源碼:ColorCat.src。