我需要尝试复制并复制由数组(a)创建的垂直和水平图像,以使正方形充满重复图像。所以从1平方图像开始,我希望水平复制2次,垂直2次,它将创建另一个图像,其中包含4个初始图像,2x2。
public static int[][] replicate(int[][] a) {
int[][] replicated = new int[a.length * 2][a[0].length * 2];
for (int r = 0; r < 2; r++) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
replicated[i][j + r * a[i].length] = a[i][j];
}
}
}
for (int r = 0; r < 2; r++) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
replicated[i + r * a.length][j] = a[i][j];
}
}
}
return replicated;
}
这使得它们穿过水平线1线,垂直线1线,但没有完全填充。所以,如果我跑了这个,我会错过4个图像的右下角。我把它们放在一起很麻烦。
答案 0 :(得分:0)
public static int[][] replicate(int[][] image) {
int[][] replicated = new int[a.length * 2][];
for (int y=0; y<image.length; y++) {
int[] column = image[y];
replicated[y] = new int[column.length * 2];
replicated[y + image.length] = new int[column.length * 2];
System.arraycopy(column, 0, replicated[y], 0, column.length);
System.arraycopy(column, 0, replicated[y], column.length, column.length);
System.arraycopy(column, 0, replicated[y + image.length], 0, column.length);
System.arraycopy(column, 0, replicated[y + image.length], column.length, column.length);
}
return replicated;
}
这段代码可能存在一些问题,因为我不是在编译器之前编写它,但我认为它可以解决这个问题。
另外,如果这是用于绘制图像,则应考虑使用TexturePaint
代替。