Grafik-LCD: Fläche füllen ?

Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2160
Dabei seit: 03 / 2003
Betreff:

Grafik-LCD: Fläche füllen ?

 · 
Gepostet: 05.08.2014 - 17:00 Uhr  ·  #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
 
Betreff:

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

 · 
Gepostet: 05.08.2014 - 18:35 Uhr  ·  #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
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2160
Dabei seit: 03 / 2003
Betreff:

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

 · 
Gepostet: 05.08.2014 - 20:41 Uhr  ·  #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
 
Betreff:

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

 · 
Gepostet: 05.08.2014 - 22:22 Uhr  ·  #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.
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 13   78   91 · Page-Gen-Time: 0.022016s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI