Ahojte potrebujem vyfarbiť oblasť na canvas-e, ktorú mi ohraničujú čiary.
Pre canvas mám vytvoréné pole, ktoré predstavuje pixel. Na každom pixeli mám zaznačené či sa na ňom nachádza čiara alebo nie ....
Zatiaľ som to chcel robiť pomocou tejto metódy:
public void vyfarbi(Graphics g, Main_Data M_D, int x, int y){
if(!M_D.getPix()[x][y].p_c.isEmpty()){
return;
}
if (x<0 || x>850 || y<0 || y>760){
return;
}
g.setColor(Color.red);
g.drawLine(x, y, x, y);
vyfarbi(g ,M_D, x+1, y);
vyfarbi(g ,M_D, x, y+1);
vyfarbi(g ,M_D, x-1, y);
vyfarbi(g ,M_D, x, y-1);
}
Avšak vždy sa mi to zacyklí ako keby do nekonečna ... nejak neviem asi správne dať tie podmienky pre ukončenie a som už z toho na prášky. Vedeli by ste mi pls pomoct??? Budem moc vdacny :) ...... eclipse mi vyhodí túto chybu:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.java2d.SurfaceData.isValid(Unknown Source)
at sun.java2d.SunGraphics2D.getCompClip(Unknown Source)
at sun.java2d.windows.GDIRenderer.drawLine(Unknown Source)
at sun.java2d.SunGraphics2D.drawLine(Unknown Source)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:28)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:30)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:32)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:30)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:32)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:30)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:32)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:30)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:32)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:30)
at xcicman_projekt_logika.Maliar.vyfarbi(Maliar.java:32)
... toto sa potom dost opakuje