posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          屏幕取色工具ColorCat

          Posted on 2011-01-16 17:38 penngo 閱讀(3441) 評論(0)  編輯  收藏 所屬分類: 練手作品
          ColorCat是俺寫的一個小工具,主要是用于獲取屏幕上任一顯示點(diǎn)的顏色,小巧的屏幕取色工具,能在屏幕上抓取任何你要的顏色,并轉(zhuǎn)成RGB和十六進(jìn)制顏色數(shù)值。
          以前一直是用別人寫的屏幕取色工具。不過某一天偶然看到j(luò)dk里面java.awt.Robot有個方法getPixelColor(x, y)可以獲取屏幕某點(diǎn)坐標(biāo)的顏色值,當(dāng)時立即想到把它和之前寫的鼠標(biāo)鉤子http://www.aygfsteel.com/pengo/archive/2010/12/17/340938.html結(jié)合,花了點(diǎn)時間做出了這個屏幕取色工具軟件,并起了個名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());
                          }

          window下運(yùn)行效果:


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

          運(yùn)行程序:ColorCat.jar (需要jre6)
          源碼:ColorCat.src
          主站蜘蛛池模板: 车险| 德惠市| 枞阳县| 云霄县| 增城市| 清徐县| 潢川县| 延川县| 西宁市| 如东县| 望奎县| 石台县| 东丰县| 罗甸县| 开远市| 天镇县| 台北县| 江都市| 五莲县| 金溪县| SHOW| 兖州市| 盱眙县| 梁山县| 龙胜| 会理县| 亳州市| 五家渠市| 庆安县| 宜君县| 永丰县| 平凉市| 五指山市| 漳平市| 晋宁县| 青冈县| 德州市| 炎陵县| 临潭县| 和政县| 阿拉尔市|