Hallo
ich will meinem Malprogramm noch ein "Farbeimer", so wie bei paint hinzufügen.
Ich dachte da an folgendes, allerdings funktioniert das nicht 100%ig
Bei meiner methode wird z.B. bei Kreisen nicht alles ausgefüllt außer die startkoordinaten sind die Kreismitte.
hat jemand eine bessere idee für ein farbeimer??
danke
ich will meinem Malprogramm noch ein "Farbeimer", so wie bei paint hinzufügen.
Ich dachte da an folgendes, allerdings funktioniert das nicht 100%ig
Code:
public void füllen(MouseEvent e){
Color farbEimerPixel = new Color(img.getRGB(e.getX(),e.getY()));
Color farbEimerPixel1 =new Color(img.getRGB(e.getX(),e.getY()));
System.out.println(farbEimerPixel);
Color aktuelleFarbe;
Color aktuelleFarbe1;
for (int y = e.getY()-1; y <=this.getHeight() && y>0;y--){
aktuelleFarbe =new Color(img.getRGB(e.getX(),y));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(e.getX(),y,1);
for (int x = e.getX()-1; x <= this.getWidth() && x>0;x--){
aktuelleFarbe =new Color(img.getRGB(x,y));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x,y,1);
}else{
x = -1;
}
}
for (int x1 = e.getX()+1; x1 <= this.getWidth() && x1<this.getWidth();x1++){
aktuelleFarbe =new Color(img.getRGB(x1,y));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x1,y,1);
}else{
x1 = this.getWidth()+1;
}
}
}else{
y = -1;
}
}
for (int y1 = e.getY(); y1 <= this.getHeight() && y1<this.getHeight();y1++){
aktuelleFarbe =new Color(img.getRGB(e.getX(),y1));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(e.getX(),y1,1);
for (int x1 = e.getX()+1; x1 <= this.getWidth() && x1<this.getWidth();x1++){
aktuelleFarbe =new Color(img.getRGB(x1,y1));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x1,y1,1);
}else{
x1 = this.getWidth()+1;
}
}
for (int x = e.getX()-1; x <= this.getWidth() && x>0;x--){
aktuelleFarbe =new Color(img.getRGB(x,y1));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x,y1,1);
}else{
x = -1;
}
}
}else{
y1 = this.getWidth()+1;
}
}
for (int x = e.getX()-1; x <= this.getWidth() && x>0;x--){
aktuelleFarbe =new Color(img.getRGB(x,e.getY()));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x,e.getY(),1);
for (int y1 = e.getY()+1; y1 <= this.getHeight() && y1<this.getHeight();y1++){
aktuelleFarbe =new Color(img.getRGB(x,y1));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x,y1,1);
}else{
y1 = this.getWidth()+1;
}
}
for (int y = e.getY()-1; y <=this.getHeight() && y>0;y--){
aktuelleFarbe =new Color(img.getRGB(x,y));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x,y,1);
}else{
y = -1;
}
}
}else{
x = -1;
}
}
for (int x1 = e.getX(); x1 <= this.getWidth() && x1<this.getWidth();x1++){
aktuelleFarbe =new Color(img.getRGB(x1,e.getY()));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x1,e.getY(),1);
for (int y1 = e.getY()+1; y1 <= this.getHeight() && y1<this.getHeight();y1++){
aktuelleFarbe =new Color(img.getRGB(x1,y1));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x1,y1,1);
}else{
y1 = this.getWidth()+1;
}
}
for (int y = e.getY()-1; y <=this.getHeight() && y>0;y--){
aktuelleFarbe =new Color(img.getRGB(x1,y));
if(farbEimerPixel.equals(aktuelleFarbe)){
img.setRGB(x1,y,1);
}else{
y = -1;
}
}
}else{
x1 = this.getWidth()+1;
}
}
}
Bei meiner methode wird z.B. bei Kreisen nicht alles ausgefüllt außer die startkoordinaten sind die Kreismitte.
hat jemand eine bessere idee für ein farbeimer??
danke