Hi,
ich hoffe, es kann mir jemand helfen. Ich Schreibe gerade einen kleines Tool zum betrachten von Bildern. Das Bild wird dabei auf einen JPanel gezeichnet welches sich in einem JScollpane befindet. Das Bild kann natürlich gedreht, gezoomt und verschoben werden. Wird das Bild durch das zoomen vergrößert, passe ich die Größe mit panel.setPreferredSize(newWidth newHeight); an. Über den Componentlistener stelle ich fest, dass die Größenänderung vom Panel abgeschlossen ist. Erst dann (vorher klappt das nicht) verschiebe ich das Panel mit scrolPane.getViewport().setViewPosition(newViewPos) so, dass die ursprüngliche Position des Bildes wie vor der Transformation ist.
Das Problem ist (insbesondere beim schnellen zoomen mit dem Mausrad), dass das Bild bereits einmal nach dem setzen von PreferredSize automatisch gezeichnet wird und und nochmal durch das anschließende verschieben. Dadurch blitzt das Bild bei der Größenänderung machmal auf was unschön ist.
Vielleicht hat ja jemand eine Idee, wie sich dieser Effekt vermeiden lässt.
ich hoffe, es kann mir jemand helfen. Ich Schreibe gerade einen kleines Tool zum betrachten von Bildern. Das Bild wird dabei auf einen JPanel gezeichnet welches sich in einem JScollpane befindet. Das Bild kann natürlich gedreht, gezoomt und verschoben werden. Wird das Bild durch das zoomen vergrößert, passe ich die Größe mit panel.setPreferredSize(newWidth newHeight); an. Über den Componentlistener stelle ich fest, dass die Größenänderung vom Panel abgeschlossen ist. Erst dann (vorher klappt das nicht) verschiebe ich das Panel mit scrolPane.getViewport().setViewPosition(newViewPos) so, dass die ursprüngliche Position des Bildes wie vor der Transformation ist.
Das Problem ist (insbesondere beim schnellen zoomen mit dem Mausrad), dass das Bild bereits einmal nach dem setzen von PreferredSize automatisch gezeichnet wird und und nochmal durch das anschließende verschieben. Dadurch blitzt das Bild bei der Größenänderung machmal auf was unschön ist.
Vielleicht hat ja jemand eine Idee, wie sich dieser Effekt vermeiden lässt.