Cześć, chcę w moim Paintcie zrobić cofnij-przywróć zmiany na podstawie BufferedImage i trójwymiarowej tablicy.
Stworzyłem więc funkcję testową:
private void addChange(BufferedImage img) {
BufferedImage[] array = new BufferedImage[3];
if (array[0] == null) { // pierwsza zmiana na obrazie
array[0] = img;
} else if (array[1] == null) { // druga
array[1] = img;
} else if (array[2] == null) { // trzecia
array[2] = img;
} else if (array[0] != null && array[1] != null && array[2] != null) { // kolejne
array[0] = array[1]; // zapominam o pierwszej zmianie i przypisuje
// na jej miejsce drugą
array[1] = array[2]; // 3 -> 2
array[2] = img; // zmiana n -> 3
try {
ImageIO.write(array[0], "png", new File(
"C:\\Users\\Adrian\\Desktop\\array1.png"));
ImageIO.write(array[1], "png", new File(
"C:\\Users\\Adrian\\Desktop\\array2.png"));
ImageIO.write(array[2], "png", new File(
"C:\\Users\\Adrian\\Desktop\\array3.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Jednak BufferedImage'y zapisane z tablic dają takie same wyniki, tzn. każda jest taka sama, równa ostatniej zmianie na obrazie.
Nie mogę znaleźć żadnego błędu, kolejność przypisywania zmian chyba jest dobra.
Pozdrawiam