2017-04-14 89 views
0

好的,所以我知道右下对角线的左上角很容易反射,您只需通过翻转坐标来转置数组。现在我有这个任务,希望我能够在对角线上反射一个图片对象。这很容易,我找出了大部分,但我得到一个错误,说我的坐标超出了界限。如何在左下角到右上角反射阵列?

for (int i=0; i<v.getWidth(); i++) 
    { 
     for (int j = 0; j < v.getHeight() - i; j++) 
     { 
      Pixel pixel = v.getPixel(i, j); 
      Pixel reflectPixel = v.getPixel(v.getWidth() - j,v.getHeight() - i); 
      int amountRed = pixel.getRed(); 
      int amountBlue = pixel.getBlue(); 
      int amountGreen = pixel.getGreen(); 
      reflectPixel.setBlue(amountBlue); 
      reflectPixel.setRed(amountRed); 
      reflectPixel.setGreen(amountGreen); 
     } 
    } 

现在我很确定我有我应该镜像的正确坐标,这是问题的循环之一。

我在想什么是第一个循环水平横跨阵列,而第二个循环垂直运行(与数组通常相反)。如果我将环路的垂直部分逐渐增加或者减少,我会有我不得不反思的路线。我通过从中减去变量i来做到这一点。

代码甚至不会编译,因为循环要求图片区域外的像素,或者reflectPixel变量设置为无效坐标。我无法弄清楚哪一个。

回答

0

我想通了,我忘了从reflectPixel对象的坐标中减去一个。结果,它被设置为刚好在图片边界外的像素。

+1

现在我不确定是应该删除还是保留它,因为我解决了自己的问题,但其他人也可以从中受益。 – Scerzy

相关问题