ARGB & Hex Color Chooser

Post your working scripts, libraries and tools for AHK v1.1 and older
User avatar
Delta Pythagorean
Posts: 627
Joined: 13 Feb 2017, 13:44
Location: Somewhere in the US
Contact:

ARGB & Hex Color Chooser

24 Sep 2017, 03:52

I thought this might be somewhat useful...
But here it is:

Code: Select all

#NoEnv
#SingleInstance Force

Gui, -MinimizeBox
Gui, Add, Progress, x0 y-5 w75 h75 +C0x969696 vProg, 100
Gui, Add, Text, x80 y5 w50 h15, Separator
Gui, Add, Text, x80 y30 w50 h15, RGBA
Gui, Add, Text, x80 y55 w50 h15, HEX
Gui, Add, Edit, x135 y25 w110 h20 vOut gSet, 150, 150, 150, 255
Gui, Add, Edit, x135 y50 w110 h20 vHex gSet, 0xFF969696
Gui, Add, Edit, x135 y0 w110 h20 Limit1 vSep gSet, % ", "
Gui, Add, Edit, x5 y300 w45 h20 +Number Center ReadOnly vR gSet, 150
Gui, Add, Edit, x70 y300 w45 h20 +Number Center ReadOnly vG gSet, 150
Gui, Add, Edit, x130 y300 w45 h20 +Number Center ReadOnly vB gSet, 150
Gui, Add, Edit, x190 y300 w45 h20 +Number Center ReadOnly vA gSet, 255
Gui, Add, Slider, x5 y100 w50 h200 +Vertical +0x20 +Tooltip +0x200 +Vertical +Center +Range0-255 -Tabstop AltSubmit vRS gSet, 150
Gui, Add, Slider, x70 y100 w50 h200 +Vertical +0x20 +Tooltip +0x200 +Vertical +Center +Range0-255 -Tabstop AltSubmit vGS gSet, 150
Gui, Add, Slider, x130 y100 w50 h200 +Vertical +0x20 +Tooltip +0x200 +Vertical +Center +Range0-255 -Tabstop AltSubmit vBS gSet, 150
Gui, Add, Slider, x190 y100 w50 h200 +Vertical +0x20 +Tooltip +0x200 +Vertical +Center +Range0-255 -Tabstop AltSubmit vAS gSet, 255
Gui, Add, Button, x5 y330 w75 h23, Copy
Gui, Add, Button, x165 y330 w75 h23, Close
Gui, Font, s18
Gui, Add, Text, x5 y325 w240 h10 0x10
Gui, Add, Text, x10 y75 w30 h25 Center, R
Gui, Add, Text, x75 y75 w30 h25 Center, G
Gui, Add, Text, x135 y75 w30 h25 Center, B
Gui, Add, Text, x195 y75 w30 h25 Center, A
Gui, Show, w245 h355, % "Color Picker"
Return

GuiEscape:
GuiClose:
ExitApp

Set:
	Get("All")
	Sep := Sep ? Sep : " "
	Set("R", RS)
	Set("G", GS)
	Set("B", BS)
	Set("A", AS)
	Set("RS", R, "+Range0-255")
	Set("GS", G, "+Range0-255")
	Set("BS", B, "+Range0-255")
	Set("AS", A, "+Range0-255")
	Set("Hex", RGB(R, G, B, A))
	Set("Out", R Sep G Sep B Sep A)
	Set("Prog",, "+C" RGB(R, G, B))
Return

ButtonCopy:
Get("All")
Clipboard := Hex "`n" Out
MsgBox, 0x40
	, % "Copied Down"
	, % "The following was saved to the clipboard for later use:`n"
	. Hex "`n"
	. Out
	, 5
Return

ButtonClose:
ExitApp
Return

RGB(R, G, B, A := 00) {
	SetFormat, Integer, Hex
	Return, (A << 24) | (R << 16) | (G << 8) | B
}

Get(Control, Option := "") {
	If (Control = "All")
		Gui, Submit, NoHide
	GuiControlGet, Out, %Control%, %Option%
	Return Out
}

Set(Control, Data := "", AddOpt := "") {
	GuiControl, %AddOpt%, %Control%, % Data
}
Didn't take me too long. At first I was just going to make it completely out of html but I said f*** that. So here it is!
Hope this helps somewhat...
Helgef
Posts: 4709
Joined: 17 Jul 2016, 01:02
Contact:

Re: ARGB & Hex Color Chooser

24 Sep 2017, 05:02

It works well, thanks for sharing :thumbup:
Spoiler
Last edited by Helgef on 24 Sep 2017, 11:54, edited 2 times in total.
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: ARGB & Hex Color Chooser

24 Sep 2017, 05:27

Nice! Thanks for sharing! :)
My Scripts and Functions: V1  V2
User avatar
Hellbent
Posts: 2109
Joined: 23 Sep 2017, 13:34

Re: ARGB & Hex Color Chooser

24 Sep 2017, 07:39

Very nice, this type of tool is so useful.

I made a color picker a few months ago to help with making gui's and the like. I use it almost every day.

I didn't end up adding alpha to it, but I did add the ability to grab any colour off the screen / add that colour to a mixer while keeping the grabbed colour as is and the ability to save up to 30-ish colours to a file for later use along with notes about what the saved colour is for.

This is my code.

Code: Select all

#SingleInstance,Force
CoordMode,Mouse,Screen
CoordMode,Pixel,Screen
SetWorkingDir %A_ScriptDir%
OnMessage(0x232, "WM_EXITSIZEMOVE")
My_Color := "000000"
C_Red := 00
C_Green := 00
C_Blue := 00
Picker_Color := "0x000000"
GoSub, Load_File
Gui, 1:Color, Black,
Gui, 1:Add, Groupbox,x5 y0 w290 h335
Gui, 1:Add, Groupbox,x10 y5 w280 h120
Gui, 1:Add, Text,cRed x10 y130 w90 center border,Red
Gui, 1:Add, Slider, x32 y145  h100 vertical  center range0-255 invert thick30 AltSubmit  vRed1 gSlider1 ,0
Gui, 1:Add, Text,cGreen x110 y130 w80 center border,Green
Gui, 1:Add, Slider, x127 y145  h100 vertical  center range0-255 invert thick30 AltSubmit  vGreen1 gSlider2 ,0
Gui, 1:Add, Text,c0076FF x200 y130 w90 center border,Blue
Gui, 1:Add, Slider, x222 y145  h100 vertical  center range0-255 invert thick30 AltSubmit  vBlue1 gSlider3 ,0
Gui, 1:Add, Text,cWhite x10 y245 w280 border center, Decimal
Gui, 1:Add, Edit, cRed x10 y265 w90 h20 vedit1 ReadOnly center,0
Gui, 1:Add, Edit, cGreen x110 y265 w80 h20 vedit2 ReadOnly center,0
Gui, 1:Add, Edit, cc0076FF x200 y265 w90 h20 vedit3 ReadOnly center,0
Gui, 1:Add, Text,cWhite x10 y290 w280 border center, Hexadecimal
Gui, 1:Add, Edit, cRed x10 y310 w90 h20 vedit4 ReadOnly center,00
Gui, 1:Add, Edit, cGreen x110 y310 w80 h20 vedit5 ReadOnly center,00
Gui, 1:Add, Edit, cc0076FF x200 y310 w90 h20 vedit6 ReadOnly center,00
Gui, 1:Add, Groupbox,x5 y335 w290 h120
Gui, 1:Add, Groupbox,x10 y340 w280 h35
Gui, 1:Add, Button, x10 y380 w280 h20 gGet_Color, Get Colour
Gui, 1:Add, Button, x10 y405 w280 h20 gAdd_To_Mixer,Add To Mixer
Gui, 1:Add, Text,cAqua x10 y430 w50 h20 center border, Colour =
Gui, 1:Add, Edit,cYellow x+5 w60 h20 Center ReadOnly vPicker_Color, %Picker_Color%
Gui, 1:Add, Text,cAqua x+5 w30 h20 center border, X =
Gui, 1:Add, Edit,cYellow x+5 w40 h20 Center ReadOnly vThe_X,
Gui, 1:Add, Text,cAqua x+5 w30 h20 center border, Y =
Gui, 1:Add, Edit,cYellow x+5 w40 h20 Center ReadOnly vThe_Y,
Gui, 1:Add, Groupbox,x5 y455 w290 h140
Gui, 1:Add, Checkbox,cLime x10 y470 Checked vLock1 gLock, Lock
Gui, 1:Add, Edit, x+10 y466 w50 h20 gScroll, 1
Gui, 1:Add, UpDown, vMyUpDown1  Range1-30 gScroll, 1
Gui, 1:Add, Text, cWhite x+10 y466 w35 h20 center border, Name:
Gui, 1:Add, Edit,cBlack x+5 y466 w125 h20 vMy_Name gSubmit_All,% Name_Array[1]
Gui, 1:Add,Text,cAqua x10 y490 w280  center border,*****     Notes     *****
Gui, 1:Add, Edit,cBlack x10 y510 w280 r2 vMy_Notes gSubmit_All,% Notes_Array[1]
Gui, 1:Add, Button, x10 y547 w280 h20 Disabled vLoad_Button gLoad_Color,Load Colour 
Gui, 1:Add, Button, x10 y570 w280 h20 Disabled vSave_Button gSave_Color,Save Colour
Gui, 3:Color, %Picker_Color%
Gui, 2:Color,%My_Color%
Gui, 1:+AlwaysOnTop
Gui, 2:+AlwaysOnTop -caption +Owner1
Gui, 3:+AlwaysOnTop -caption +Owner1
Gui, 1:Show, w300 h600,Hellbents Colour Mixer
WinGetPos,X1, Y1,,,Hellbents Colour Mixer
X2 := X1 + 20
Y2 := Y1 +44
X3 := X1 + 20
Y3 := Y1 +377
Gui, 2:Show, x%X2% y%Y2% w266 h100
Gui, 3:Show, x%X3% y%Y3% w266 h20
Gui, 1:Submit,NoHide
return
GuiClose:
ExitApp
Lock:
Gui, 1:Submit, NoHide
if(Lock1==1)
{
GuiControl,1:Disable,Load_Button,
GuiControl,1:Disable,Save_Button,
}
if(Lock1==0)
{
GuiControl,1:Enable,Load_Button,
GuiControl,1:Enable,Save_Button,
}
return
Slider1:
Gui,1:Submit,NoHide
My_Color := C_Red C_Green C_Blue
Gui, 2:Color, %My_Color%
GuiControl,1:,edit1,%Red1%
C_Red := Red1
SetFormat,IntegerFast,Hex
if(C_Red<16)
{
StringRight, C_Red, C_Red, 1
C_Red := 0 C_Red
}
if(C_Red>=16)
StringRight, C_Red, C_Red, 2
My_Color := C_Red C_Green C_Blue
GuiControl,1:,edit4,%C_Red%
Gui, 2:Color, %My_Color%
SetFormat,IntegerFast,D
return
Slider2:
Gui,1:Submit,NoHide
My_Color := C_Red C_Green C_Blue
Gui, 2:Color, %My_Color%
GuiControl,1:,edit2,%Green1%
C_Green := Green1
SetFormat,IntegerFast,Hex
if(C_Green<16)
{
StringRight, C_Green, C_Green, 1
C_Green := 0 C_Green
}
if(C_Green>=16)
StringRight, C_Green, C_Green, 2
My_Color := C_Red C_Green C_Blue
GuiControl,1:,edit5,%C_Green%
Gui, 2:Color, %My_Color%
SetFormat,IntegerFast,D
return
Slider3:
Gui,1:Submit,NoHide
My_Color := C_Red C_Green C_Blue
Gui, 2:Color, %My_Color%
GuiControl,1:,edit3,%Blue1%
C_Blue := Blue1
SetFormat,IntegerFast,Hex
if(C_Blue<16)
{
StringRight, C_Blue, C_Blue, 1
C_Blue := 0 C_Blue
}
if(C_Blue>=16)
StringRight, C_Blue, C_Blue, 2
My_Color := C_Red C_Green C_Blue
GuiControl,1:,edit6,%C_Blue%
Gui, 2:Color, %My_Color%
SetFormat,IntegerFast,D
return
Submit_All:
Gui, Submit, NoHide
return
Get_Color:
isPressed := 0
Loop
{
Left_Mouse := GetKeyState("LButton")
Right_Mouse := GetKeyState("RButton")
if(Left_Mouse==False&&isPressed==0)
isPressed := 1
else if(Left_Mouse==True&&isPressed==1)
{
MouseGetPos,The_X,The_Y
PixelGetColor,Picker_Color,The_X,The_Y, RGB
Gui, 3:Color, %Picker_Color%
GuiControl,1:,Picker_Color,%Picker_Color%
GuiControl,,The_X,%The_X%
GuiControl,,The_Y,%The_Y%
}
else if(Right_Mouse==True)
break
}
return
Add_To_Mixer:
Gui, 2:Color, %Picker_Color%
Temp_Color := Picker_Color
StringRight, Temp_Color, Temp_Color, 6
Temp_Color1 := Temp_Color
StringLeft, Temp_Color1, Temp_Color1, 2
C_Red := Temp_Color1
GuiControl,1:,Edit4,%C_Red%
C_Red := "0x" C_Red
C_Red := C_Red + 0
GuiControl,1:,Edit1,%C_Red%
Temp_Color1 := Temp_Color
StringLeft, Temp_Color1, Temp_Color1, 4
StringRight, Temp_Color1, Temp_Color1, 2
C_Green := Temp_Color1
GuiControl,1:,Edit5,%C_Green%
C_Green := "0x" C_Green
C_Green := C_Green + 0
GuiControl,1:,Edit2,%C_Green%
Temp_Color1 := Temp_Color
StringRight, Temp_Color1, Temp_Color1, 2
C_Blue := Temp_Color1
GuiControl,1:,Edit6,%C_Blue%
C_Blue := "0x" C_Blue
C_Blue := C_Blue + 0
GuiControl,1:,Edit3,%C_Blue%
GuiControl,1:,Red1,%C_Red%
GuiControl,1:,Green1,%C_Green%
GuiControl,1:,Blue1,%C_Blue%
GoSub,Slider1
GoSub,Slider2
GoSub,Slider3
return
Scroll:
Gui,1:Submit,NoHide
GuiControl,1:,My_Name,% Name_Array[MyUpDown1]
GuiControl,1:,My_Notes,% Notes_Array[MyUpDown1]
return
Load_File:
Color_Array := []
Name_Array := []
Notes_Array := []
Reset := 1
Color11 := 1
Name11 := 1
Notes11 := 1
FileRead, File_Holder, Hellbents Colour Mixer Save File.txt
Loop, Parse, File_Holder,|,|
{
if(Reset==1)
{
Color_Array[Color11] := A_LoopField
Color11++
}
if(Reset==2)
{
Name_Array[Name11] :=  A_LoopField
Name11++
}
if(Reset==3)
{
Notes_Array[Notes11] :=  A_LoopField
Notes11++
}
Reset++
if(Reset==4)
Reset := 1
}
return
Load_Color:
Gui,2:Color,% Color_Array[MyUpDown1]
Gui,3:Color,% Color_Array[MyUpDown1]
Picker_Color := Color_Array[MyUpDown1]
GuiControl, 1:,Picker_Color,% Picker_Color
Temp_Color := Picker_Color
StringRight, Temp_Color, Temp_Color, 6
Temp_Color1 := Temp_Color
StringLeft, Temp_Color1, Temp_Color1, 2
C_Red := Temp_Color1
GuiControl,1:,Edit4,%C_Red%
C_Red := "0x" C_Red
C_Red := C_Red + 0
GuiControl,1:,Edit1,%C_Red%
Temp_Color1 := Temp_Color
StringLeft, Temp_Color1, Temp_Color1, 4
StringRight, Temp_Color1, Temp_Color1, 2
C_Green := Temp_Color1
GuiControl,1:,Edit5,%C_Green%
C_Green := "0x" C_Green
C_Green := C_Green + 0
GuiControl,1:,Edit2,%C_Green%
Temp_Color1 := Temp_Color
StringRight, Temp_Color1, Temp_Color1, 2
C_Blue := Temp_Color1
GuiControl,1:,Edit6,%C_Blue%
C_Blue := "0x" C_Blue
C_Blue := C_Blue + 0
GuiControl,1:,Edit3,%C_Blue%
GuiControl,1:,Red1,%C_Red%
GuiControl,1:,Green1,%C_Green%
GuiControl,1:,Blue1,%C_Blue%
GoSub,Slider1
GoSub,Slider2
GoSub,Slider3
return
Save_Color:
FileDelete, Hellbents Colour Mixer Save File.txt
p := 1
Notes_Array[MyUpDown1] := My_Notes
Name_Array[MyUpDown1] := My_Name
Color_Array[MyUpDown1] := Picker_Color
Loop 30
{
FileAppend,% Color_Array[p]"|"Name_Array[p]"|"Notes_Array[p]"|",Hellbents Colour Mixer Save File.txt
p++
}
Color_Array := []
Name_Array := []
Notes_Array := []
Reset := 1
Color11 := 1
Name11 := 1
Notes11 := 1
FileRead, File_Holder, Hellbents Colour Mixer Save File.txt
Loop, Parse, File_Holder,|,|
{
if(Reset==1)
{
Color_Array[Color11] := A_LoopField
Color11++
}
if(Reset==2)
{
Name_Array[Name11] :=  A_LoopField
Name11++
}
if(Reset==3)
{
Notes_Array[Notes11] :=  A_LoopField
Notes11++
}
Reset++
if(Reset==4)
Reset := 1
}
return
WM_EXITSIZEMOVE()
{
IfWinExist,Hellbents Colour Mixer
{
WinGetPos, X, Y, , , A
X2:=X+20
Y2:=Y+44
X3 := X + 20
Y3 := Y +377
Gui, 2:Show, x%X2% y%Y2%
Gui, 3:Show, x%X3% y%Y3%
}
}
Esc::ExitApp
User avatar
Delta Pythagorean
Posts: 627
Joined: 13 Feb 2017, 13:44
Location: Somewhere in the US
Contact:

Re: ARGB & Hex Color Chooser

24 Sep 2017, 11:38

I do think. In time. I'll add a PixelGetColor-like area for the people that really need it.

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: No registered users and 238 guests