*Ich hab jetzt in dem Fall noch ein anderen Problem, wollte deswegen keinen neuen Thread aufmachen:
Wenn ich das Rechteck zum Zuschneiden vergrößern möchte müssen Höhe und Breite ja immer noch in dem Verhältnis bleiben in dem sie waren.
Deswegen habe ich folgendes gemacht:
1 private void adjustRectangle(int x, int y) {
2 float movement;
3 verhaeltnis = ((float) (rightBottom.y - leftTop.y))/((float) (rightBottom.x - leftTop.x));
switch(getAffectedSide(x,y)) {
case LEFT:
movement = x-leftTop.x;
if(isInImageRange(new PointF(leftTop.x+movement,leftTop.y+movement)))
8 leftTop.set((int) (leftTop.x+movement),(int) (leftTop.y+(movement*verhaeltnis)));
break;
case TOP:
movement = y-leftTop.y;
if(isInImageRange(new PointF(leftTop.x+movement,leftTop.y+movement)))
leftTop.set((int) (leftTop.x+(movement/verhaeltnis)),(int) (leftTop.y+movement));
break;
case RIGHT:
movement = x-rightBottom.x;
if(isInImageRange(new PointF(rightBottom.x+movement,rightBottom.y+movement)))
rightBottom.set((int) (rightBottom.x+movement),(int) (rightBottom.y+(movement*verhaeltnis)));
break;
case BOTTOM:
movement = y-rightBottom.y;
if(isInImageRange(new PointF(rightBottom.x+movement,rightBottom.y+movement)))
rightBottom.set((int) (rightBottom.x+(movement/verhaeltnis)),(int) (rightBottom.y+movement));
break;
}
}
Also in der dritten Zeile berechne ich das Verhältnis von Höhe zu Breite und dann z.B. in der 8. Zeile multipliziere ich den Wert der Bewegung mit dem Verhältnis. Beim debuggen zeigt er mir auch das richtige Verhältnis an. Also nach meiner Logik müsste das funktionieren
Aber das Verhältnis bleibt nicht so. Je nachdem wie oft ich verkleiner und vergrößer desto stärker ändert sich das Verhältnis zu dem Ursprünglichen.
Woran kann das liegen?*
Hab es jetzt so gelöst, das ich bei dem TouchEvent UP kontrolliere wie das Verhältnis ist und wenn es nicht richtig ist bearbeite ich den rightBottom Punkt.
— geändert am 11.09.2014, 18:47:04
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.