Hallo Java-Forum
Auf einem JPanel zeichne ich Rectangles. Beim zoomen wird immer wieder die Position neu berechnet.
Hier ein Beispiel für die Berechnung beim Hereinzoomen.
Wenn man jetzt ganz oft rein- und wieder rauszoomt, gibt es mit der zeit eine kleine abweichung in Richtung linke obere Ecke.
Meine Vermutung ist, dass es an der Rundung liegt, weil die doubles für die fillRect() und drawRect() Methode in Integer umgewandelt werden müssen.
hier der Ausschnitt der paintComponent() Methode:
Gibt es irgendeine Möglichkeit das zu umgehen, außer mit einem Schätzwert, der draufaddiert wird?
Gruß
Johannes
Auf einem JPanel zeichne ich Rectangles. Beim zoomen wird immer wieder die Position neu berechnet.
Hier ein Beispiel für die Berechnung beim Hereinzoomen.
Java:
double tempX = plant.getRectangle().getX()*zoomFactor;
double tempY = plant.getRectangle().getY()*zoomFactor;
plant.getRectangle().setRect(tempX, tempY, controller.getQuadratB(), controller.getQuadratH());
Wenn man jetzt ganz oft rein- und wieder rauszoomt, gibt es mit der zeit eine kleine abweichung in Richtung linke obere Ecke.
Meine Vermutung ist, dass es an der Rundung liegt, weil die doubles für die fillRect() und drawRect() Methode in Integer umgewandelt werden müssen.
hier der Ausschnitt der paintComponent() Methode:
Java:
for (Iterator<Plant> iterator = controller.getPlants().iterator(); iterator.hasNext();) {
Plant plant = (Plant) iterator.next();
rect = plant.getRectangle();
g.setColor(plant.getBluetenFarbe());
g.fillRect(rect.x, rect.y, controller.getQuadratB(), controller.getQuadratH());
g.setColor(Color.black);
g.drawRect(rect.x, rect.y, controller.getQuadratB(), controller.getQuadratH());
}
Gibt es irgendeine Möglichkeit das zu umgehen, außer mit einem Schätzwert, der draufaddiert wird?
Gruß
Johannes