#DEFINE WM_LBUTTONDOWN 513 #DEFINE WM_CLOSE 16 FBSLSETTEXT(ME, "Before Flood Fill") ' Set form caption FBSLSETFORMCOLOR(ME, RGB(0, 255, 255)) ' Cyan: persistent background color FBSL.GETDC(ME) ' Use volatile FBSL.GETDC below to avoid extra assignments RESIZE(ME, 0, 0, 220, 220) CENTER(ME) SHOW(ME) DIM Breadth AS INTEGER, Height AS INTEGER FBSL.GETCLIENTRECT(ME, 0, 0, Breadth, Height) DrawCircles() ' Initialize circles BEGIN EVENTS SELECT CASE CBMSG CASE WM_LBUTTONDOWN: FillCircles() ' Flood fill circles CASE WM_CLOSE: FBSL.RELEASEDC(ME, FBSL.GETDC) ' Clean up END SELECT END EVENTS SUB FillCircles() FILL(FBSL.GETDC, Breadth / 2, Height / 2, &HFFFF) ' Yellow: flood fill using intrinsics FOR DIM x = 0 TO Breadth / 2 ' Red: flood fill iteratively FOR DIM y = 0 TO Height / 2 IF NOT POINT(FBSL.GETDC, x, y) THEN PSET(FBSL.GETDC, x, y, &HFF) NEXT NEXT FBSLSETTEXT(ME, "After Flood Fill") ' Reset form caption END SUB SUB DrawCircles() ' Concatenate function calls CIRCLE(FBSL.GETDC, Breadth / 2, Height / 2, 85, &HFFFFFF, 0, 360, 1, TRUE) _ ' White (FBSL.GETDC, Breadth / 3, Height / 3, 30, 0, 0, 360, 1, TRUE) ' Black END SUB