# gezeichnete Elemente überprüfen ob sie ein Punkt xy abdecken



## Günther57 (4. Mai 2008)

Hallo,

ich besitze eine JPanel in dem ich Figuren mit der paintComponent Methode erzeuge.

Z.b.

```
public void paintComponent(Graphics gr) {
      Graphics2D graphics  = (Graphics2D) gr;
      graphics.setColor(this.farbe);
  
      switch(this.form) {
      case Kreis:    graphics.drawOval(this.x1, this.x2, this.x2 - this.x1, this.y2 - this.y1);
      			     graphics.fillOval(this.x1, this.x2, this.x2 - this.x1, this.y2 - this.y1); break;
      case Rechteck: graphics.drawRect(this.x1, this.x2, this.x2 - this.x1, this.y2 - this.y1);
                     graphics.fillRect(this.x1, this.x2, this.x2 - this.x1, this.y2 - this.y1);break;
      case Linie:    graphics.drawLine(this.x1, this.y1, this.x2, this.y2); break;
      default:break;
      }
	  
  }
```

nun möchte ich überprüfen ob z.b. ein gefülltes Viereck (15,15,200,200) den Punkt (30/40) abdeckt.

Bevor ich eine Funktion schreibe die alle Punkte auf der Karte für dieses Objekt ausrechnet möchte ich wissen ob es da nicht eine fertige Funktion dafür gibt?!

Am besten währe eine Funktion die wahr oder falsch(boolean) ausgibt, je nachdem ob der Punkt(x/y) innerhalb  des Objektes ist.


----------



## LordLuzifer (4. Mai 2008)

Für Vierecke (Rectangles) gibt es die contains(Point)-Methode, die ein boolean zurückgibt.
Also: new Rectangle(x,y,w,h).contains(point);

Bei Kreisen ist das einfach: ist die Entfernung vom Mittelpunkt zu deinem Punkt kleiner/gleich dem Radius, liegt der Punkt innerhalb des Kreises bzw. darauf, sonst nicht.

Beispielmethode:

```
public static boolean circleContains(Point middle, int radius, Point point){
//middle ist der Mittelpunkt des Kreises, radius sein Radius
if (middle.distance(point)<= radius)
return true; 
else return false;
}
```


----------



## Günther57 (4. Mai 2008)

Super, danke!

Für Linien gibt es zufällig keine fertige Methode?
Wenn nicht bekomm ichs auch so hin..

gruß Grünther


----------



## Quaxli (5. Mai 2008)

Guck einfach mal in die API: Lines2D


----------

