Grafik-LCD: Fläche füllen ?

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Grafik-LCD: Fläche füllen ?

 · 
Posted: 05.08.2014 - 17:00  ·  #1
Hallo @ all,

hat einer von euch schon mal versucht eine Freifläche auf einem grafischen LCD auszufüllen ? Konkret zeichne ich ein x-beliebiges Dreieck mit 3 Linien und möchte die eingeschlossene Fläche füllen.
Irgend eine gute Idee ?

Gruss
Harry
Harald_K
 
Avatar
 
Subject:

Re: Grafik-LCD: Fläche füllen ?

 · 
Posted: 05.08.2014 - 18:35  ·  #2
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.
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Grafik-LCD: Fläche füllen ?

 · 
Posted: 05.08.2014 - 20:41  ·  #3
Hallo Harald,

danke sehr - ich teste es mal.
Die Übergabewerte x und y sind ein beliebiger Punkt innerhalb des zu füllenden Bereiches ?

Gruss
Harry
Harald_K
 
Avatar
 
Subject:

Re: Grafik-LCD: Fläche füllen ?

 · 
Posted: 05.08.2014 - 22:22  ·  #4
Jepp.

hab auf TP damals diese halbrekursive Version genommen weil Turbo auf CP/M und PC nur maximal 64 kByte Stack kann und man da bei großen Grafiken schnell ans Ende kommt.
außerdem war das WIN3.x-eigen Grafiksystem sehr stark vom Treiber des herstellers abhängig, mal füllte es, mal nicht ... drum eben selbstgefüllt.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 13   78   91 · Page-Gen-Time: 0.035118s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI