# Objekt nicht ins negative oder null skalieren



## Guest (22. Nov 2007)

Hi,

ich möchte, dass beim Skalieren die Objekte nicht mehr als eine Minimumgröße runterskaliert werden. Habe den folgen Code für Polygonskalierung :



```
else if (scale) {
Rectangle oldRect = p.getRect();
zF.setPolyRect(p.getBounds());
Rectangle newRect = zF.getPolyRect();
scaleStartPoint = e.getPoint();
                                 
currentRectWidth = (int) (zF.getPolyRect().getMaxX()-10);
currentRectHeight = (int) zF.getPolyRect().getMaxY()-10;
currentRectX = zF.getPolyRect().x+10;
currentRectY = zF.getPolyRect().y+10;
                       
zF.setZeigePolyRect(true);
                                 
// Skalieren von der oberen Ecke links
if (aendereObenLinks
     && e.isMetaDown() == false) {                   
                                     
  int x = zF.getPolyRect().x - (last_x + e.getX());
  int y = zF.getPolyRect().y - (last_y + e.getY());
                           
  if (!(scaleStartPoint.x > currentRectWidth)
     && !(scaleStartPoint.y > currentRectHeight)) {
       
    newRect.setRect(last_x + e.getX(), last_y + e.getY(),
                  zF.getPolyRect().width + x,
                  zF.getPolyRect().height + y);
  }
  neuePolyKoorZuweisen(oldRect, newRect);

  p.invalidate();
  saveScaledPoly = true;
}
```

Das Polygon soll in x und/oder y Richtung nicht weniger als 10 px runterskaliert werden, aber größer schon..

Der o.a. Code Code tut folgendes :

Wenn ich Skalieren möchte, werden von dem jeweiligen Polygon ein Copy erstellt, auf dieses die Skalierung ausgeführt wird. Wenn die Maustaste losgelassen wird, wird die Copy dem Originalpolygon zugewiesen.

Wenn die Minimumgrenze beim Skalieren unterschritten wird, wir das Polygon in der Ursprungsgröße angezeigt, wobei es eigentlich einfach in der Minimumgröße zu sehen sein sollte. Sobald man es aber vom minimum aus wieder größer skaliert, ohne die Maus loszulassen, nimmt das Polygon die richtige Skalierungsgröße wieder an.



Was ist verkehrt am Code??

PS: Sorry Admin, habe die gleiche Frage ausversehen in einem anderen Thread erstellt, statt ein neues Thema zu öffnen.. Also hier deswegen nochmal...


----------



## DonIvanCorleone (22. Nov 2007)

Ich würde schauen ob bei diesen Zeilen der Deklaration und Initialisierung nicht ein denkfehler vorliegt:


> ```
> else if (scale) {
> Rectangle oldRect = p.getRect();
> zF.setPolyRect(p.getBounds());
> ...



nur so ne Idee, "riecht" aber irgendwie danach.


----------



## Guest (22. Nov 2007)

Hi DON,  

danke für den Tip.

zF.setPolyRect(p.getBounds());  hat dort wirklich nichts zu suchen. Jetzt funkionierts.

gruss


----------

