2013-07-09 142 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 

你可以从我的网站空间下载该代码的编译的可执行文件。