also ich nehme da das hier:
PROCEDURE xfill(x,y:Integer);
VAR xl,xr : Integer;
BEGIN
IF ispixel(x,y) THEN Exit;
xl := x;
xr := x + 1;
IF (xr>xmax) OR (xl<0) OR (y<1) OR (y>ymax-1) THEN Exit;
WHILE NOT ispixel(xr,y) DO BEGIN
dopixel(xr,y);
Inc(xr);
IF xr>xmax THEN Exit;
END;
WHILE NOT ispixel(xl,y) DO BEGIN
dopixel(xl,y);
Dec(xl);
IF xl<0 THEN Exit;
END;
FOR x:=xl+1 TO xr-1 DO BEGIN
IF NOT ispixel(x,y-1) THEN xfill(x,y-1);
IF NOT ispixel(x,y+1) THEN xfill(x,y+1);
END;
END;
dabe ist 0..xmax und 0..ymax das LCD in Pixeln,
ispixel stellt fest, ob das Pixel schon gesetzt ist (kann man sogar farbig machen)
dopixel setzt das Pixel (wenn man will auch farbig)
das ganze ist etwas rekursiv, füllt also nur eine Pixelzeile und ruft sich dann mit der Zeile drüber und drunter selbst auf.
Aufgerufen wird es mit einem beliebigen Startpunkt innerhalb der Umrandung
gibt das Ganez auch komplett ohne Rekursion, ist evtl. wegen geringer RAM-Größe auf nem Mikrocontroller wichtig.
achja - das Ganze ist aus nem älteren Turbo-Pascal programm, also bitte die elab-spezifische if-then-else-endif Syntax etc selber umschreiben.