1

私はこれをカラー配列として持っています:

public RGBImage(int width, int height, RGBColor background) {
      pixel =  new RGBColor[width][height];
      this.w = width;
      this.h = height;
      this.b = background;

      for(x = 0; x < width; x++){
          for(y = 0; y < height; y++){
              pixel[x][y] = b;
          }
      }

そして私はそれを回転させたいです、そうです、コードは@Oblivion Creationsのおかげで正方行列に関してはすでにうまくいっていますが、非正方行列を使用すると 範囲外エラーが発生します

   public void rotateRight() {
      RGBColor[][] mirror = new RGBColor[h][w];
              for(int i = 0 ; i < h; i++){
                  for(int j = 0 ; j < w; j++){
                      mirror[i][j] = pixel[j][w-i-1];
                  }
              }
            pixel = mirror;
  }
4

2 に答える 2

0

問題は、mirror = pixelassignmirrorが と同じ配列を参照することpixelです。配列はコピーされません。したがって、ループ内で、配列のあるセルから同じ配列のpixel[i][j] = mirror[h-j-1][i]別のセルにピクセルをコピーします。

于 2014-10-16T23:21:48.840 に答える