Polygongröße durch das umliegenden Reckteck verändern

Diablo68

Grünschnabel
Hallo,

ich habe ein Tool geschrieben, mir der man mit Hilfe der Maus Polygone erstellen und in einem Vector abspeichern kann. Wenn man auf das jeweilige Polygon klickt, erscheint ein Reckteck um das Polygon herum. Ich möchte, dass sich das Polygon an die Rechteckgröße anpasst, wenn ich es vertikal, horizontal und auch diagonal ändere.

Wie kann ich vorgehen ?

Gruss

Diablo
 
Hallo,

du kannst das mit Java2D lösen. Da gibt es die Klasse Path2D die du mit einer AffineTransform verändern kannst. Den Path2D kannst du dann statt des Polygons zeichnen lassen.
Code:
Polygon poly;
Path2D.Double pd = new Path2D.Double(poly);
AffineTransform aff = new AffineTransform();
aff.scale(x,y);
pd.transform(aff);
Was für Werte an scale() übergeben werden müssen ist mir auch noch nicht ganz klar. Am besten liest du dir mal das Javadoc durch http://java.sun.com/javase/6/docs/api/java/awt/geom/AffineTransform.html
 
danke für den Feedback !

Mit dem u.a Code funktioniert es nur teilweise:

Code:

Code:
// Linke Seite tranformieren
else if (aendereMinX && e.isMetaDown() == false) {   
   
   // Das Stück, das beim Tranfsformieren des Recktsecks dazugekommen ist.
   int abs = zF.polyRect.x - (last_x + e.getX());
 
   // Neue Werte werden dem Rechteck zugewiesen            
   zF.polyRect.setRect(last_x + e.getX(), zF.polyRect.y,
      zF.polyRect.width + abs, zF.polyRect.height);

   // Polygon X-Punkt-Werte um abs erweitert/reduziert                        
   for (int i = 0; i < p.npoints; i++) {
      int x = p.xpoints[i];
      boundsMaxX = Math.max(boundsMaxX, x);
      if (p.xpoints[i] < boundsMaxX) {
         p.xpoints[i] -= abs;
      }
   }
}


Die Punkte werden zwar um den neuen Rechtecksabstand erweitert, d.h werden parallel zur Rechtecksänderungen verschoben. Das Polygon wird aber nicht an allen Punkten skaliert. Nur zwischen boundsMaxX und seinen direkt verbundenen Punkten.

Wie kann ich den Code umschreiben, das alle Punkte proportional zum Reckteck skaliert werden ?

Gruß

Diablo
 
Zurück