Comment refléter une image horizontalement en utilisant des tableaux Java 2D?
Salutations gars et filles Je suis tombé sur un problème que je n'arrive pas à comprendre, et les messages similaires ont une structure différente de ce que j'utilise. Par conséquent, j'apprécierais vraiment quelques conseils. Jetons un coup d'œil à ma méthode de miroir horizontal:
public void mirrorHorizontal(){
Pixel[][] pixels = this.getPixels2D();
Pixel topPixel = null;
Pixel bottomPixel = null;
int width = pixels[0].length;
for (int row = 0; row < pixels.length / 2; row++){
for (int col = 0; col < width; col++){
bottomPixel = pixels[row][col];
topPixel = pixels[row][col];
bottomPixel.setColor(topPixel.getColor());
}
} }
Permet d'établir que ce code a été fourni pour utiliser et modifier, donc je ferai de mon mieux pour expliquer.
Dans cette boucle for, ce que j'ai fait a été de couper les lignes en deux en plongeant les pixels.longueur par 2 donc je peux atteindre le sommet image en haut, et un sur le fond.
for (int row = 0; row < pixels.length / 2; row++){
Donc je crois que voici mon problème:
bottomPixel = pixels[row][col];
topPixel = pixels[row][col];
Je ne sais pas quoi mettre à l'intérieur du bottomPixel [row] [col]
Je crois qu'il doit rendre quelque chose comme ceci:
- 1 2 3 4
- 5 6 7 8
- 5 6 7 8
- 1 2 3 4
Cependant, je ne sais pas comment le modifier pour y parvenir.
Cela utilise deux boucles for modifiées et des valeurs différentes pour obtenir des effets similaires à retournement d'un tableau multidimensionnel java par AngryDuck.
1 answers
, Donc dans votre exsample la bottomPixel
et topPixel
sont exactement les mêmes.
Si j'ai bien compris votre question, cela résoudra votre problème:
for (int row = 0; row < pixels.length / 2; row++){
for (int col = 0; col < pixels[0].length; col++){
topPixel = pixels[row][col];
bottomPixel = pixels[(pixels.length - 1) - i][col];
bottomPixel.setColor(topPixel.getColor());
}
}
J'ai changé la coordonnée de ligne de bottomPixel
afin qu'elle prenne la coordonnée en miroir à partir du bas. Mais cela ne fonctionne que si votre image a exactement pixels.length / 2
lignes.