2013-07-09 141 views
-1

是否有工具來創建這種顏色表?我想輸入的十六進制顏色列表和得到的東西回來這樣的:創建十六進制顏色表

HEX color example

我找遍了找一個自動工具,但3頁的谷歌,仍然一無所獲。我想不出任何人想用手工創建這種表格的原因,並且我遇到過很多這樣的表格,因此必須有一種工具來創建HEX顏色的可視化表示。

+0

那麼,「3頁的谷歌」似乎不是一個很大的努力,但更多的是不被要求在使用搜索引擎之前詢問; - ) 你用於搜索的術語是什麼?也許你只需要尋找不同的東西? – Samoth

+0

我已經修好了。剛剛製作了一個所有可能的十六進制顏色的列表,使用組合發生器給它0-9和A-F,並在HEX代碼周圍編輯我的「表格」。有時使用搜索引擎不是解決方案,但與人交談是。 – mvaneijgen

+0

好吧,是的。嗯,如果你想表達我的努力,當你不想接受它作爲正確的答案時,至少可以提升我的解決方案會是很好的...... ;-)編碼它很有趣,但它花了我一些時間,並且據我瞭解您的問題,它也適用於... – Samoth

回答

0

好吧,這裏是我的解決方案中的AutoIt:http://jtmeyer.de/hexColors.exe

#include <GUIConstants.au3> 
#include <Array.au3> 
#include <StaticConstants.au3> 
#include <ButtonConstants.au3> 
#include <WindowsConstants.au3> 
#include <Color.au3> 


$defaultHexCodes = "003366,003399,0033CC,0033FF,006633,006699,0066CC,0066FF,009933,009966,0099CC,0099FF,00CC33,00CC66,00CC99,00CCFF,00FF33,00FF66,00FF99,00FFCC,330066,330099,3300CC,3300FF,336600,336699,3366CC,3366FF,339900,339966,3399CC,3399FF,33CC00,33CC66,33CC99,33CCFF,33FF00,33FF66,33FF99,33FFCC,660033,660099,6600CC,6600FF,663300,663399,6633CC,6633FF,669900,669933,6699CC,6699FF,66CC00,66CC33,66CC99,66CCFF,66FF00,66FF33,66FF99,66FFCC,990033,990066,9900CC,9900FF,993300,993366,9933CC,9933FF,996600,996633,9966CC,9966FF,99CC00,99CC33,99CC66,99CCFF,99FF00,99FF33,99FF66,99FFCC,CC0033,CC0066,CC0099,CC00FF,CC3300,CC3366,CC3399,CC33FF,CC6600,CC6633,CC6699,CC66FF,CC9900,CC9933,CC9966,CC99FF,CCFF00,CCFF33,CCFF66,CCFF99,FF0033,FF0066,FF0099,FF00CC,FF3300,FF3366,FF3399,FF33CC,FF6600,FF6633,FF6699,FF66CC,FF9900,FF9933,FF9966,FF99CC,FFCC00,FFCC33,FFCC66,FFCC99" 
$defaultHexCodes = StringSplit($defaultHexCodes, ",", 2) 

Global $cols = 6 

GUICreate("HexColors", 640, 480) 
$inpHexCodes = GUICtrlCreateEdit(_ArrayToString($defaultHexCodes, @CRLF), 10, 10, 80, 430) 
$inpCols = GUICtrlCreateInput($cols, 10, 450, 40, 20) 
$btnGenerate = GUICtrlCreateButton("Gen", 60, 450, 30, 20) 
GUICtrlCreateUpdown($inpCols) 
$image = GUICtrlCreateGraphic(100, 10, 530, 460) 
GUICtrlSetState($btnGenerate, $GUI_FOCUS) 

Global $labels[1] = [GUICtrlCreateLabel("Hex-Code-Table", 100, 10, 530, 460, $SS_CENTER)] 
GUISetState() 

$hexCodes = $defaultHexCodes 

Do 
    $msg = GUIGetMsg() 
    Switch $msg 
     Case $inpCols 
     $cols = GUICtrlRead($inpCols) 
     If $cols < 1 Then GUICtrlSetData($inpCols, 1) 
     If $cols > 16 Then GUICtrlSetData($inpCols, 16) 
     Case $btnGenerate 
     $newHexCodes = GUICtrlRead($inpHexCodes) 
     $newHexCodes = StringReplace($newHexCodes, @CR, "|") 
     $newHexCodes = StringStripWS($newHexCodes, 8) 
     ConsoleWrite("read new hex codes... ") 
     $hexCodes = StringSplit($newHexCodes, "|", 2) 
     For $index = UBound($hexCodes) - 1 To 0 Step -1 
      $hexCode = $hexCodes[$index] 
      If StringIsXDigit($hexCode) Then 
       $hexCodes[$index] = "0x" & $hexCode 
      Else 
       MsgBox(0, "Error", $hexCode & " is not a hexadecimal code - will be remove") 
       _ArrayDelete($hexCodes, $index) 
      EndIf 
     Next 
     ConsoleWrite("found " & UBound($hexCodes) & @CR) 

     GenerateHexTable() 
    EndSwitch 
Until $msg == $GUI_EVENT_CLOSE 


Func GenerateHexTable() 
    GUICtrlDelete($image) 
    For $label In $labels 
     GUICtrlDelete($label) 
    Next 

    $w = 530 
    $h = 460 

    ; CleanUp 
    $image = GUICtrlCreateGraphic(100, 10, 530, 460) 
    GuiCtrlSetState($image, $GUI_DISABLE) 

    $hexCodesSize = UBound($hexCodes) 
    ReDim $labels[$hexCodesSize] 

    $colWidth = $w/($cols) 
    $rowHeight = $h/Ceiling($hexCodesSize/($cols)) 

    $row = 0 
    $col = 0 
    $index = 0 
    While $index < $hexCodesSize 
     For $col = 0 to $cols - 1 
     $left = Int($colWidth * $col) + 3 
     $top = Int($rowHeight * $row) + 3 
     $index = $row * $cols + $col 
     If $index < UBound($hexCodes) Then 
      $hexCode = $hexCodes[$index] 
      GUICtrlSetGraphic($image, $GUI_GR_COLOR, 0, $hexCode) 
      GUICtrlSetGraphic($image, $GUI_GR_RECT, $left, $top, $colWidth - 3, $rowHeight - 3) 
      $labels[$index] = GUICtrlCreateLabel(StringMid($hexCode, 3), 100 + $left, 10 + $top, $colWidth - 3, $rowHeight - 3, $SS_CENTER, $WS_EX_TRANSPARENT) 
      If GetBrightness($hexCode) < 130 Then 
       GUICtrlSetColor($labels[$index], 0xffffff) 
      Else 
       GUICtrlSetColor($labels[$index], 0x000000) 
      EndIf 
      GUICtrlSetBkColor($labels[$index], $GUI_BKCOLOR_TRANSPARENT) 
     EndIf 
     Next 
     $row += 1 
    WEnd 
    GUICtrlSetGraphic($image, $GUI_GR_REFRESH) 
EndFunc 

; calculate perceived brightness (0-255) 
Func GetBrightness($color) 
    Return Sqrt(_ColorGetRed($color)^2 * 0.299 + _ColorGetGreen($color)^2 * 0.587 + _ColorGetBlue($color)^2 * 0.114) 
EndFunc 

你可以從我的網站空間下載該代碼的編譯的可執行文件。