To run the code you need this bmp saved in the same directory as the LB code. If you draw your own black-outline drawing of enclosed shapes, you'll need to find the x,y coordinates of the centre from which to fill them.
The result should be a display of animated lights. Try other colour sequences, timings, etc.
global wg, hdc dim b( 30, 2), c$( 13) b( 1, 1) = 86: b( 1, 2) =437 b( 2, 1) =138: b( 2, 2) =380 b( 3, 1) =200: b( 3, 2) =394 b( 4, 1) =307: b( 4, 2) =425 b( 5, 1) =303: b( 5, 2) =369 b( 6, 1) =275: b( 6, 2) =318 b( 7, 1) =202: b( 7, 2) =306 b( 8, 1) =147: b( 8, 2) =289 b( 9, 1) =256: b( 9, 2) =243 b( 10, 1) =187: b( 10, 2) =179 b( 11, 1) =238: b( 11, 2) =137 b( 12, 1) =224: b( 12, 2) = 92 b( 13, 1) =232: b( 13, 2) = 38 c$( 1) ="255 72 0" c$( 2) ="255 156 0" c$( 3) ="255 255 0" c$( 4) =" 72 255 0" c$( 5) =" 0 255 234" c$( 6) =" 0 250 255" c$( 7) =" 0 42 255" c$( 8) ="222 0 255" c$( 9) ="230 211 237" c$( 10) ="242 253 120" c$( 11) ="250 251 160" c$( 12) ="252 253 200" c$( 13) ="255 255 255" WindowWidth =455 WindowHeight =600 nomainwin open "Xmas Tree" for graphics_nsb as #wg hw =hwnd( #wg) calldll #user32, "GetDC", hw as ulong, hdc as ulong #wg "trapclose quit" loadbmp "scr", "xmasTreeColoured.bmp" #wg "down ; drawbmp scr 1 1 ; flush ; size 12" n =0 for k =1 to 200 for j =1 to 13 call bauble b( j, 1), b( j, 2), c$( 1 +( n +j) mod 12) n =n +1 next j next k wait sub bauble x, y, col$ #wg "backcolor "; col$ ' this is colour to fill WITH #wg "color "; col$ targetcolor =0 +0 *2^8 +0 *2^16 ' black is colour to fill out TO calldll #gdi32, "ExtFloodFill", hdc as ulong,_ x as long, y as long,_ targetcolor as long,_ _FLOODFILLBORDER as long, result as long ' ie fill out 'til this colour is met.. call delay 10 end sub sub delay sleeptime calldll #kernel32, "Sleep", sleeptime as long, ret as void scan end sub sub quit h$ calldll #user32, "ReleaseDC", hw as ulong, hdc as ulong, ret as void 'release the DCclose #h$ close #h$ end end sub