komplexe Flächen ausfüllen

Xym

Erfahrenes Mitglied
Hi Leute,

ich wollte meinem Zeichenprogramm die Möglichkeit hinzufügen jede Fläche die man zeichnen auszufüllen, wie bei Paint.

Dazu habe ich schon ein paar Gedanken gemacht und habe versuch zu vor zu gehen :

1) Die Farbe des Pixel beschaffen aus dem man klickt.
Java:
//Der Teil ist in der mousePressed-Methode
try 
{
        Robot robot = new Robot();
        
        // pos.x und pos.y sind die Postion des Fenster aus dem Bildschirm, 
        // weil die Methode den Punkt 0, 0 links oben ist.
        color = robot.getPixelColor(e.getX() + pos.x, e.getY() + pos.y);
        
        // Rekursive Methode			 
        füllen(e.getX(), e.getY(), color);
} 
catch (AWTException e) 
{
        e.printStackTrace();
}

2) Eine rekursive Methoder schreiben. In der soll von dem 1. Pixel an nach alle Pixel neben an gesucht werden und in der anderen Farbe ausfüllen. Und dann vom nächsten Pixel.
Doch hier ist auch mein Problem.
Ich habe versucht die Methode zu schreiben doch ich weiß nicht nach dem ich 1 Pixel geprüft habe, in welche Richtung ich weiter gehen soll.

Hoffe ihr könnt mir helfen!
 
Zuletzt bearbeitet:
ich würde dir vorschlagen so zu gehen:
|-----------------
|
|
|
|
danach so:
|-----------------
||----------------
||
||
||

usw...

Grüße Maik
 
Irgendwie verstehe ich nicht was du damit sagen willst..
Kann mir bitte das wer mit Worten erklären ? :D :D
 
Ach so , aber ich will mit der Methode jede Form ausfüllen die geschlossen ist. Und ich glaube das es so nicht funktioniert.
Als Beispiel habe ich ein Bild im Anhang. Wenn man dort hinklick wo das Kreuz soll sich alles ausfüllen.

Hoffe nun, dass klar ist was ich meine.
 

Anhänge

  • Beispiel.png
    Beispiel.png
    1,9 KB · Aufrufe: 11
1. von X aus, nach rechts bis zu der Line.
2. von X aus, nach links bis zur Linie.
Danach schaust ob unter dem Punkt der Pixel auch frei ist, dann 1 und 2 nochmal.

Ob das effektiv ist? Keine Ahnung ^^
 
Ich denke ich habe die lösung ;)

Man soltle so vorgehen, wie es auf diesem Bild zu sehen ist:
http://root-space.eu/file/6wvf8itn

Der weiße Punkt ist der Punkt auf den der User gelickt hat, nun betrachtet man die 8 (orange) Pixel daneben und überprüft diese wieder auf Farbgleichheit, sollten diese auch gleich sein, so ändert man die Farbe.
Nun überprüft man von jedem der 8 Pixel die Pixel daneben, dies sieht dann so aus:
http://root-space.eu/file/bgoafwzg

Danach wiederholt man das ganze, dann wird es so aussehen:
http://root-space.eu/file/7564n016

und das wiederholt man immer wieder.

So sollte es klappen.

Grüße Maik
 
Zuletzt bearbeitet:
Kannst du die Bilder nicht einfach als Anhang machen? Ich kann die Links zb nicht oeffnen oder es dauert ewig? Keine Ahnung.
 
Dann nützt dir ein Anhang auch nichts weil das auch ein Link ist den du öffnen musst der dann auch so ewig braucht xD
 
Nein, direkt uebers Forum als Anhang, mein ich. Bei externen Hostern ist wird es ja sowieso geloescht nach einer Zeit.
Wie Xym das mit seinem "Beispiel" gemacht hat :D
 
Zurück