1

我无法让我的方法发挥作用。该方法应该镜像我在其对角线上选择的任何图像以产生镜像效果,但目前它只是产生未经编辑的相同图像,我没有做错什么。任何帮助将不胜感激。谢谢你。

public Picture mirrorImageDiagonal() {
  int size = this.getWidth();
  Pixel rightPixel = null;
  Pixel leftTargetPixel = null;
  Pixel rightTargetPixel = null;
  Picture target = new Picture(size, size);
  for (double x = 0; x < size; x ++) {
      for (double y = 0; y <= x; y ++) {
          int yIndex = Math.min((int) y, this.getHeight() - 1);
          int xIndex = Math.min((int) x, this.getWidth() - 1);
          leftTargetPixel = target.getPixel(yIndex, xIndex);
          rightTargetPixel = target.getPixel(xIndex, yIndex);
          rightPixel = this.getPixel(xIndex, yIndex);
          rightTargetPixel.setColor(rightPixel.getColor());
          leftTargetPixel.setColor(rightPixel.getColor());
          }
    }
  return target;
  }
4

1 回答 1

3

我假设您正在尝试完成图片实验室数据包中的 A6 挑战。我刚刚为学校完成了这个,但如果你没有,我希望这仍然对你有帮助。

public void mirrorDiagonal()
  {
    Pixel[][] pixels = this.getPixels2D();
    Pixel pixel1 = null;
    Pixel pixel2 = null;
    int width = pixels[0].length;
    for (int row = 0; row < pixels.length; row++)
    {
      for (int col = 0; col < width; col++)
      {
        if (col < pixels.length)
        {
            pixel1 = pixels[row][col];
            pixel2 = pixels[col][row];
            pixel1.setColor(pixel2.getColor());
        }
      }
    } 
  }
于 2015-01-16T03:56:42.837 回答