CreateGradient() : Creates a linear gradient bitmap. (Horizontal / Vertical)

Post your working scripts, libraries and tools for AHK v1.1 and older
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

CreateGradient() : Creates a linear gradient bitmap. (Horizontal / Vertical)

22 Jun 2021, 11:47

CreateGradient( Width, Height, IsVertical, Colors* )
 
Parameters:
  • Width, Height : Dimensions of target bitmap
  • IsVertical : Pass true for vertical gradience. By default, the function creates a horizontal linear gradient.
  • Colors: Array of colors in 0xRRGGBB format. Minimum 2 colors required. Default array is Black, White, Black.
 
This function is GDI based. For a GdiPlus based function, you may refer @just me 's [FUNC] LinearGradient
Two more related functions by me: CreateDDB() and CreateDIB()
 
 
The function (along with a demo)

Code: Select all

CreateGradient(W, H, V:=0, Colors*) {                     ; by SKAN on D46L/D46L @ tiny.cc/creategradient
Local
  N := ( Colors := Colors.Count()>1 ? Colors : [ 0, 16777215, 0 ] ).Count()

, xOFF := (X := V ? W : 0) ? 0 : Ceil(W/(N-1))
, yOFF := (Y := V ? 0 : H) ? 0 : Ceil(H/(N-1))

, VarSetCapacity(VERT, N*16, 0)
, VarSetCapacity(MESH, N*8,  0)

  Loop % ( N,  pVert:=&VERT,  pMesh:=&MESH )
           X :=   V ? (X=0 ? W : X:=0) : X
         , Y :=  !V ? (Y=0 ? H : Y:=0) : Y
     , Color :=  Format("{:06X}", Colors[A_Index] & 0xFFFFFF)
     , Color :=  Format("0x{5:}{6:}00{3:}{4:}00{1:}{2:}00", StrSplit(Color)*)
     , pVert :=  NumPut(Color, NumPut(Y, NumPut(X, pVert+0, "Int"), "Int"), "Int64")
     , pMesh :=  NumPut(A_Index, NumPut(A_Index-1, pMesh+0, "Int"), "Int")
         , Z :=  V ? (Y += yOFF) : (X += xOFF)

  hBM := DllCall("Gdi32.dll\CreateBitmap", "Int",1, "Int",1, "Int",0x1, "Int",32, "PtrP",0, "Ptr")
, hBM := DllCall("User32.dll\CopyImage", "Ptr",hBM, "Int",0x0, "Int",W, "Int",H, "Int",0x008, "Ptr")
, mDC := DllCall("Gdi32.dll\CreateCompatibleDC", "Ptr",0, "Ptr")
, DllCall("Gdi32.dll\SaveDC", "Ptr",mDC)
, DllCall("Gdi32.dll\SelectObject", "Ptr",mDC, "Ptr",hBM)
, DllCall("Msimg32.dll\GradientFill", "Ptr",mDC, "Ptr",&VERT, "Int",N, "Ptr",&MESH, "Int",N-1, "Int",!!V)
, DllCall("Gdi32.dll\RestoreDC", "Ptr",mDC, "Int",-1)
, DllCall("Gdi32.dll\DeleteDC", "Ptr",mDC)

Return hBM
}


#NoEnv
#Warn
#SingleInstance, Force
SetWorkingDir, %A_ScriptDir%
SetBatchLines, -1

SysColor := Format("0x{5:}{6:}{3:}{4:}{1:}{2:}", StrSplit(Format("{:06X}", DllCall("User32.dll\GetSysColor", "Int",15)))*)
H := "HBITMAP:"
Gui, New, -DPIScale, CreateGradient() Demo
Gui, Margin, 20, 20

Gui, Add, Picture,,        % H . CreateGradient(480,   1, 0x0, SysColor, 0x444444, 0x000000, 0x444444, SysColor)
Gui, Add, Picture,,        % H . CreateGradient(480,   1, 0x0, SysColor, 0x000044, 0x0000FF, 0x000044, SysColor)
Gui, Add, Picture,,        % H . CreateGradient(480,   1, 0x0, SysColor, 0xFF0000, 0x00FF00, 0x0000FF, SysColor)
Gui, Add, Picture,,        % H . CreateGradient(480,   1, 0x0, 0x0000FF, 0x00FF00, 0xFF0000, SysColor, SysColor, SysColor, 0xFF0000, 0x00FF00, 0x0000FF)
Gui, Add, Picture,,        % H . CreateGradient(480,   2, 0x0, 0x7F7F7F, 0x222222, 0x7F7F7F)
Gui, Add, Picture,,        % H . CreateGradient(480,   6, 0x0, 0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF)
Gui, Add, Picture,,        % H . CreateGradient(6,   100, 0x1, SysColor, 0x0000AA, 0x0000FF, 0x0000AA, SysColor)

Gui, Add, Picture, x+m yp, % H . CreateGradient(37,  100, 0x1, 0x000000, 0xFFFFFF, 0x111111)
Gui, Add, Picture, x+m yp, % H . CreateGradient(37,  100, 0x0, 0x000000, 0xFFFFFF, 0x111111)
Gui, Add, Picture, x+m yp, % H . CreateGradient(100, 100, 0x1, 0x007F7F, 0x00AAAA, 0x00EEEE)
Gui, Add, Picture, x+m yp, % H . CreateGradient(100, 100, 0x1, 0x7F7F00, 0xAAAA00, 0xFFFF00)
Gui, Add, Picture, x+m yp, % H . CreateGradient(100, 100, 0x1, 0x7F007F, 0xAA00AA, 0xFF00FF)

Gui, Add, Picture, xm,     % H . CreateGradient(480,  50, 0x0
, 0xFF0000, 0xEE0000, 0xDD0000, 0xCC0000, 0xBB0000, 0xAA0000, 0x990000, 0x880000, 0x770000, 0x660000, 0x550000, 0x440000, 0x330000, 0x220000, 0x110000, 0x000000
, 0x001100, 0x002200, 0x003300, 0x004400, 0x005500, 0x006600, 0x007700, 0x008800, 0x009900, 0x00AA00, 0x00BB00, 0x00CC00, 0x00DD00, 0x00EE00, 0x00FF00
, 0x00EE00, 0x00DD00, 0x00CC00, 0x00BB00, 0x00AA00, 0x009900, 0x008800, 0x007700, 0x006600, 0x005500, 0x004400, 0x003300, 0x002200, 0x001100, 0x000000
, 0x000011, 0x000022, 0x000033, 0x000044, 0x000055, 0x000066, 0x000077, 0x000088, 0x000099, 0x0000AA, 0x0000BB, 0x0000CC, 0x0000DD, 0x0000EE, 0x0000FF)

Gui, Show
Return

GuiEscape:
GuiClose:
 ExitApp
 
image.png
image.png (13.45 KiB) Viewed 2879 times
My Scripts and Functions: V1  V2
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

_CreateGradient()

22 Jun 2021, 19:10

Just a test script. Planning to use this for a color picker that I may never write.
I hope somebody beats me to it.

Code: Select all

_CreateGradient(Color, W:=256) {                     ; by SKAN on D46N/D46N @ tiny.cc/creategradient
Local
  W := (W:=Format("{:d}", W)) < 256 ? 256 : W > 512 ? 512 : W
, Color := Format("{:06X}", Color & 0xFFFFFF)
, Color := Format("0x{5:}{6:}00{3:}{4:}00{1:}{2:}00", StrSplit(Color)*)

, VarSetCapacity(VERT, 4*16, 0)
, VarSetCapacity(MESH, 2*12, 0)
, NumPut(Color, NumPut(0xFF00FF00FF00, VERT, 8, "Int64")+8, "Int64")
, NumPut(W, NumPut(W, NumPut(W, NumPut(W, VERT, 16, "Int")+16, "Int")+8, "Int"), "Int")
, NumPut(1, NumPut(3, NumPut(2, NumPut(2, NumPut(1, MESH, 4, "Int"), "Int"), "Int"), "Int"), "Int")

, hBM := DllCall("Gdi32.dll\CreateBitmap", "Int",1, "Int",1, "Int",0x1, "Int",32, "PtrP",0, "Ptr")
, hBM := DllCall("User32.dll\CopyImage", "Ptr",hBM, "Int",0x0, "Int",W, "Int",W, "Int",0x8, "Ptr")
, mDC := DllCall("Gdi32.dll\CreateCompatibleDC", "Ptr",0, "Ptr")
, DllCall("Gdi32.dll\SaveDC", "Ptr",mDC)
, DllCall("Gdi32.dll\SelectObject", "Ptr",mDC, "Ptr",hBM)
, DllCall("Msimg32.dll\GradientFill", "Ptr",mDC, "Ptr",&VERT, "Int",4, "Ptr",&MESH, "Int",2,"Int",2)
, DllCall("Gdi32.dll\RestoreDC", "Ptr",mDC, "Int",-1 )
, DllCall("Gdi32.dll\DeleteDC", "Ptr",mDC)

Return hBM
}


#NoEnv
#Warn
#SingleInstance, Force

Gui, New,, _CreateGradient()
Gui, Add, Picture, +E0x20000, % "HBITMAP:" . _CreateGradient(0x00A8FF, 384)
Gui, Show
Return

GuiEscape:
GuiClose:
 ExitApp
 
image.png
image.png (15.82 KiB) Viewed 2830 times
User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

23 Jun 2021, 00:50

Nice work SKAN! Thanks for sharing this.
User avatar
SirSocks
Posts: 360
Joined: 26 Oct 2018, 08:14

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

23 Jun 2021, 18:38

Wow, this is super cool! 🤩
I learn a lot from your functions and examples.
A color picker would be an amazing addition.
Thanks again for sharing your scripts @SKAN
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

24 Jun 2021, 20:39

SirSocks wrote:
23 Jun 2021, 18:38
Wow, this is super cool! 🤩
Thanks. :)
 
A color picker would be an amazing addition.
 
Yes.. writing one right now. Hope to finish it soon.
Preview:
 
Spoiler
Eik
Posts: 9
Joined: 26 Feb 2020, 20:53

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 04:41

;I'm using translation. deepl.com

Hello!
I've been longing to create a ColorPicker with AutoHotkey for a long time.
Thanks to SKAN, this is going to happen.

This trial product dynamically changes the color candidates for each rgb
From top to bottom, rgb.
The color can be changed by dragging the mouse like a slider bar

Code: Select all

cl()
Return ;---------------------

cl(){
global
static new:=1
static s_name,s_w,s_h,s_vr,s_vg,s_vb
	if new
	{
		new=
		;【setting】―――――――――――――――――
		s_w:=480,s_h:=25
		s_name:="xxx"
		s_vr:=s_name "_vr"		,s_vg:=s_name "_vg"		,s_vb:=s_name "_vb"
		o:={"name":s_name
			,"w":s_w
			,"h":s_h
			,"vr":s_vr
			,"vg":s_vg
			,"vb":s_vb}
		ccll("set",o),o:=""
		;―――――――――――――――――――――――――

		;―――――――――――――――――――――――――
		;SysColor := Format("0x{5:}{6:}{3:}{4:}{1:}{2:}", StrSplit(Format("{:06X}", DllCall("User32.dll\GetSysColor", "Int",15)))*)
		;H := "HBITMAP:"
		Gui,%s_name%: New, -DPIScale, CreateGradient() Demo
		Gui,%s_name%: Margin,20,% s_h+5
		;―――――――――――――――――――――――――

		;【Button】―――――――――――――――――
		s_wb:=s_w//3,s_hb:=s_h*2
		Gui,%s_name%: Add,Button,y0     w%s_wb% h%s_hb% gαRELOAD,RELOAD
		Gui,%s_name%: Add,Button,y0 x+0 w%s_wb% h%s_hb% gαExitapp,Exitapp
		Gui,%s_name%: Add,Button,y0 x+0 w%s_wb% h%s_hb% gαMinimize,Minimize

		Gui,%s_name%: Add,Button,y+0 x20  w%s_wb% h%s_h% gαtest1,test1
		Gui,%s_name%: Add,Button,    x+0  w%s_wb% h%s_h% gαtest2,test2
		Gui,%s_name%: Add,Button,    x+0  w%s_wb% h%s_h% gαtest3,test3
		;―――――――――――――――――――――――――

		;【rgb】―――――――――――――――――
		;Gui,%s_name%: Add, Picture,x20  ,        % H . CreateGradient(s_w,s_h, 0x0, 0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF,0xFF00FF)
		Gui,%s_name%: Add, Picture,v%s_vr% gΔr x20
		Gui,%s_name%: Add, Picture,v%s_vg% gΔg
		Gui,%s_name%: Add, Picture,v%s_vb% gΔb
		ccll(1,0)
		ccll(2,0)
		ccll(3,0)
		;GuiControl,%s_name%:,%s_vr%,	% H . CreateGradient(s_w,s_h, 0x0, 0x000000, 0xFF0000)
		;GuiControl,%s_name%:,%s_vg%,	% H . CreateGradient(s_w,s_h, 0x0, 0x000000, 0x00FF00)
		;GuiControl,%s_name%:,%s_vb%,	% H . CreateGradient(s_w,s_h, 0x0, 0x000000, 0x0000FF)
		;―――――――――――――――――――――――――
	}
	Gui,%s_name%: Show
	Return ;---------------------
	;―――――――――――――――――――――――――

	;【G COLOR】―――――――――――――――――
	Δr:
	Δg:
	Δb:
		CoordMode,Mouse,relative
		MouseGetPos,x,y,,_c
		_cn:=SubStr(_c,0,1)	;_c=static\d
		ControlGetPos,_cx,,_cw,,%_c%,a
		;While,GetKeyState("LButton", "P")
		settimer,rgbtimer,50
	Return ;---------------------
	rgbtimer:
		CoordMode,Mouse,relative
		SetFormat,FLOAT,0.2
		if GetKeyState("LButton", "P")
		{
			settimer,rgbtimer,off
			tooltip
			Return
		}
		MouseGetPos,x,y,,c
		if (xx=x) and (yy=y)
			Return
		xx:=x,yy:=y
		if (c=_c)
		{
			p:=SubStr( 255/(_cw/(x-_cx)) ,1,-3 )
			ccll(_cn,p)
			tooltip,% (  (_cn=1)?"red":(_cn=2)?"green":(_cn=3)?"blue":""  ) "   " p  "`n255/(" _cw "/(" x "-" _cx ") )"
			; (  (_cn=1)?"red":(_cn=2)?"green":(_cn=3)?"blue":""  ) "`n" p "`n" SubStr( 255/(_cw/(x-_cx)) ,1,-3 ) "`n255/(" _cw "/(" x "-" _cx ") )"
		}
	Return ;---------------------
	;―――――――――――――――――――――――――

	;【G Button】―――――――――――――――――
	αRELOAD:
		RELOAD
	Return ;---------------------
	αExitapp:
		Exitapp
	Return ;---------------------
	αMinimize:
		Gui,%s_name%: Minimize
	Return ;---------------------
	αtest1:
		ccll(1,0),ccll(2,0),ccll(3,0)
	Return ;---------------------
	αtest2:
		ccll(1,122),ccll(2,122),ccll(3,122)
	Return ;---------------------
	αtest3:
		ccll(1,255),ccll(2,255),ccll(3,255)
	Return ;---------------------
	;―――――――――――――――――――――――――
}
Return ;---------------------


ccll(rgb:="",x:="",ex:="") {
global
static new:=1,H,r,g,b
static s_name,s_w,s_h,s_vr,s_vg,s_vb
static r1,g1,b1,r2,g2,b2
	if new
	{
		new=
		r:=g:=b:="00"
		H := "HBITMAP:"
	}
	if rgb=set
	{
		if isobject(x) {
			For k, v in x
				s_%k%:=v
		}
		else
			s_%x%:=ex
		Return ;---------------------
	}
	 
	if strlen(  x:=Format("{:x}",x)  )=1
		x:=0 x
	 (rgb=1)?r:=x
	:(rgb=2)?g:=x
	:(rgb=3)?b:=x
	:""

	r1:="0x" "00"     g     b    ,r2:="0x" "ff"     g     b
 	g1:="0x"    r  "00"     b    ,g2:="0x"    r  "ff"     b
 	b1:="0x"    r     g  "00"    ,b2:="0x"    r     g  "ff"
	;r1 "`t"r2 "`n"g1 "`t"g2 "`n"b1 "`t"b2
	if (rgb!=1)
	GuiControl,%s_name%:,%s_vr%,	% H . CreateGradient(s_w,s_h, 0x0, r1 , r2 )	;r
	if (rgb!=2)
	GuiControl,%s_name%:,%s_vg%,	% H . CreateGradient(s_w,s_h, 0x0, g1 , g2 )	;g
	if (rgb!=3)
	GuiControl,%s_name%:,%s_vb%,	% H . CreateGradient(s_w,s_h, 0x0, b1 , b2 )	;b
}
Return ;---------------------
Attachments
20210625191352.jpg
20210625191352.jpg (20.85 KiB) Viewed 2493 times
Last edited by Eik on 25 Jun 2021, 05:19, edited 4 times in total.
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 04:56

Hi @Eik

Thanks for the share.

There was leak in CreateGradient() which I had fixed silently.
There should not be a .mDC in CreateGradient() code.
If found, replace it to mDC

The extra dot was typing error. Sorry!.
Eik
Posts: 9
Joined: 26 Feb 2020, 20:53

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 06:34

Thank you, @SKAN :) , for taking the time to do this.
If you hadn't told me, I never would have known.
User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 08:29

@SKAN

If you haven't gotten too far with your color picker yet. Would you mind having a look at this one and perhaps incorporate a few of the features it has.
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=60942

Namely:

1: The ability to shrink it down to a little tab (if you run the other one and right click it you can see what I mean). That way it is easy to access it quickly and it doesn't get in the way.

2: Convert color to grayscale value.

3: Get color from screen.

4: Save colors.

5: Random color generator.

Looking forward to giving your color picker a spin either way.
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 12:46

Hi @Hellbent

The inspiration for writing CreateGradient() was from
@fabricio234's ask-for-help topic https://www.autohotkey.com/boards/viewtopic.php?f=76&t=90818
Hellbent wrote:
25 Jun 2021, 08:29
If you haven't gotten too far with your color picker yet. Would you mind having a look at this one and perhaps incorporate a few of the features it has.
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=60942
Very nice. I had already tried it.. and also now. :)
Hellbent wrote:
25 Jun 2021, 08:29
1: The ability to shrink it down to a little tab (if you run the other one and right click it you can see what I mean). That way it is easy to access it quickly and it doesn't get in the way.
I'm not writing a script.. It is a function.. as always!
Hellbent wrote:
25 Jun 2021, 08:29
2: Convert color to grayscale value.
Interesting.
Hellbent wrote:
25 Jun 2021, 08:29
3: Get color from screen.
Already done.. but one color seems not enough.. I going to try to capture 225 pixels instead. (15x15)
Hellbent wrote:
25 Jun 2021, 08:29
4: Save colors.
Mine is a custom ChooseColor(). One color in -> one color out.
Hellbent wrote:
25 Jun 2021, 08:29
5: Random color generator.
Again, Planning to do 225 colors.. (15x15)
Hellbent wrote:
25 Jun 2021, 08:29
Looking forward to giving your color picker a spin either way.
Thanks. :thumbup:
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 13:24

SKAN wrote:
25 Jun 2021, 12:46
Hellbent wrote:
25 Jun 2021, 08:29
5: Random color generator.
 
Again, Planning to do 225 colors.. (15x15)
 

I take that back. 15x15 is so confusing.
5x5 looks alright.

Here is some test code
 
image.png
image.png (8.53 KiB) Viewed 2405 times
 

Code: Select all

#NoEnv
#Warn
#SingleInstance, Force

Gui, New,, RNG color generator
Gui, Font, S10
Gui, Margin, 20, 10
Gui, Add, Picture, w320 h320 0xE 0x40 +E0x20000 hwndhpic
Gui, Add, Button, gGenerate, Generate
Gui, Show

Generate:
  hBM := DllCall("CreateBitmap", "Int",1, "Int",1, "UInt",0x1, "UInt",24, "Ptr",0, "Ptr")
  hBM := DllCall("CopyImage", "Ptr",hBM, "UInt",0x0, "Int",5, "Int",5, "UInt",0x200C, "Ptr")
  VarSetCapacity(BMBITS, 16*5, 0)
  DllCall("Advapi32.dll\SystemFunction036", "Ptr",&BMBITS, "Int",16*5)
  DllCall("SetBitmapBits", "Ptr",hBM, "UInt",16*5, "Ptr",&BMBITS)
  GuiControl,,%hPic%, *w0 *h0 HBITMAP:%hBM%
Return

GuiEscape:
GuiClose:
  ExitApp
User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

25 Jun 2021, 19:34

SKAN wrote:
25 Jun 2021, 12:46
I'm not writing a script.. It is a function.. as always!
Ok. I'm actually working on a project that could use just such a function. I was just going to include a simple button that the user could press to get a color from their screen, but having a color picker function might make things easier for them. :thumbup:

I was going to post that there was a issue with your random color gui but it looks like you have already fixed it. :D
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

27 Jun 2021, 17:06

Hellbent wrote:
25 Jun 2021, 19:34
Ok. I'm actually working on a project that could use just such a function. I was just going to include a simple button that the user could press to get a color from their screen, but having a color picker function might make things easier for them. :thumbup:
My dual-monitor setup is killing me :(
My secondary monitor seems to be be GDI-scaled, i.e, PixelGetColor or MouseGetPos doesn't work right.
I have finalized the UI design. I will be posting the function in couple of days.
But be aware that picking color or screen from a GDI-scaled display seems impossible for me with AHK.

Preview of the completed UI:
@SirSocks Hope you don't mind. :)
 
image.png
image.png (19.63 KiB) Viewed 2272 times
User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

27 Jun 2021, 18:05

SKAN wrote:
27 Jun 2021, 17:06
My dual-monitor setup is killing me :(
My secondary monitor seems to be be GDI-scaled, i.e, PixelGetColor or MouseGetPos doesn't work right.
But be aware that picking color or screen from a GDI-scaled display seems impossible for me with AHK.
Just when I thought that scaling couldn't be more annoying...

SKAN wrote:
27 Jun 2021, 17:06
I have finalized the UI design. I will be posting the function in couple of days.
Preview of the completed UI:
That looks great, can't wait to give it a spin. :thumbup:
fabricio234
Posts: 122
Joined: 06 Mar 2020, 21:48

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

27 Jun 2021, 19:45

SKAN wrote:
24 Jun 2021, 20:39
SirSocks wrote:
23 Jun 2021, 18:38
Wow, this is super cool! 🤩
Thanks. :)
 
A color picker would be an amazing addition.
 
Yes.. writing one right now. Hope to finish it soon.
Preview:
 
image.png
@SKAN amazing have you finished the color picker? 🥰
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

29 Jun 2021, 04:40

fabricio234 wrote:
27 Jun 2021, 19:45
@SKAN amazing have you finished the color picker? 🥰
I'll post within a day. I promise. :thumbup:

PS:
I had to make this commitment, or else I wouldn't stop improving it.
Dog tired, I am. :(

User avatar
SirSocks
Posts: 360
Joined: 26 Oct 2018, 08:14

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

29 Jun 2021, 20:35

SKAN wrote:
27 Jun 2021, 17:06

Preview of the completed UI:
@SirSocks Hope you don't mind. :)
 
Image

@SKAN Hahahahha! What an amazing preview of the UI. I couldn't make it any better myself :lol:
User avatar
SKAN
Posts: 1551
Joined: 29 Sep 2013, 16:58

Re: CreateGradient() : Creates a linear gradient bitmap ( horizontal / vertical )

29 Jun 2021, 20:46

SirSocks wrote:
29 Jun 2021, 20:35
@SKAN Hahahahha! What an amazing preview of the UI. I couldn't make it any better myself :lol:
:)


@Hellbent / @fabricio234 / @SirSocks

ChooseColors() ; Color selection UI

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: Skrell and 123 guests