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

Status
Nicht offen für weitere Antworten.
G

Günther57

Gast
Hallo,

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

Z.b.
Code:
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

Aktives Mitglied
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:
Code:
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

Günther57

Gast
Super, danke!

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

gruß Grünther
 
Status
Nicht offen für weitere Antworten.

Oben