It is very easy in any decent 'Paint' program ( I use GIMP) to draw graduated fills and other patterns. By putting this as a background and masking it with a solid rectangle ( usually this will be white or black) at a calculated sideways distance you can generate very smart bar displays.
nomainwin
WindowWidth =300
WindowHeight =300
UpperLeftX = 20
UpperLeftY = 20
graphicbox #Meter.g, 60, 70, 170, 10
graphicbox #Meter.g2, 50, 140, 180, 112
graphicbox #Meter.g3, 30, 140, 10, 110
statictext #Meter.st, "", 100, 45, 100, 20
'statictext #Meter.st2, "", 100, 2, 150, 30
groupbox #Meter.gb, "Temperature", 20, 20, 240, 70
button #Meter.bu1, "Colour change", [colChange], LR, 180, 150
open "Colour-gradient bars." for window as #Meter
#Meter, "trapclose [quit]"
#Meter.g "down"
#Meter.g2 "down"
#Meter.g3 "down ; size 8"
#Meter.g3 "cls ; set 3 8 ; flush"
loadbmp "scale", "coloursMulti.bmp"
#Meter.g2 "drawbmp scale 0 0"
#Meter.g2 "flush"
#Meter.st "!font courier 8 bold"
yOffset =10
barNumber =1
i =0
while i <100
'for i =0 to 60 step 0.1
temperature =1 +84 *( 1 +sin( i))
#Meter.st using( "###", int( temperature)); " Celsius"
#Meter.g "drawbmp scale 0 "; str$( int( yOffset -11.2 *barNumber))
#Meter.g "place "; temperature; " 0"
#Meter.g "backcolor black"
#Meter.g "boxfilled 250 10"
#Meter.g "flush"
timer 100, [on]
wait
[on]
timer 0
'next i
i =i +0.1
wend
wait
' _______________________________________________________________________
[quit]
close #Meter
timer 0
end
[colChange]
barNumber =(barNumber +1) mod 11
'#Meter.st2 "y displacement = "; barNumber
#Meter.g3 "cls ; set 3 "; barNumber *11 -4
wait