Ich habe jetzt hier schon ne Weile nach Lösungen gesucht meinen Zoom irgendwie zu beschleunigen, aber ich denke, ich habe grundsätzlich nen falschen Ansatz. Nehme mal an das Image jedesmal vom Panel zu löschen und wieder neu zu adden braucht einfach zu viel Zeit. Nun habe ich mit diese paintComponent und repaint Geschichten angesehen, aber das ist AWT oder? Und das soll man ja nicht mit Swing mischen?
Hier mal ein Code Ausschnitt:
Angesteuert wird das ganze von:
Nehme an, da gibts ne ganz einfach Lösung, die ich bisher nur einfach übersehen habe. Danke euch schonmal.
PS: Was auch noch tool wäre, wenn die Qualitätseinstellung während des Skalierens auf FAST steht und dann nach ner halben Sekunde Nichtbenutzung des Scrollrades nochmal in SMOOTH gerendert wird.
Hier mal ein Code Ausschnitt:
Code:
public void reScale(JPanel panel, Dimension dimension) {
if (orgImage != null) {
scaledDimension = dimension;
panel.removeAll();
Image image = orgImage.getScaledInstance(scaledDimension.width, scaledDimension.height, Image.SCALE_FAST);
this.add(new JLabel(new ImageIcon(image)));
panel.add(getComponent(0));
}
}
Angesteuert wird das ganze von:
Code:
MouseWheelListener mouseWheelListener = new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (myMediaFiles[1] != null) {
if (e.getWheelRotation() < 0) {
myMediaFiles[1].reScale(panel[1], new Dimension (myMediaFiles[1].getScaledDimension().width+2, myMediaFiles[1].getScaledDimension().height+2));
}
else {
myMediaFiles[1].reScale(panel[1], new Dimension (myMediaFiles[1].getScaledDimension().width-2, myMediaFiles[1].getScaledDimension().height-2));
}
}
panel[1].validate();
panel[1].repaint();
}
};
Nehme an, da gibts ne ganz einfach Lösung, die ich bisher nur einfach übersehen habe. Danke euch schonmal.
PS: Was auch noch tool wäre, wenn die Qualitätseinstellung während des Skalierens auf FAST steht und dann nach ner halben Sekunde Nichtbenutzung des Scrollrades nochmal in SMOOTH gerendert wird.