好吧,所以我知道右下角的左上方很容易反射过来,你只需通过翻转坐标来转置数组。现在我有这个任务,希望我在对角线上反映一个图片对象。这很容易,我想出了大部分内容,但是我收到的错误表明我的坐标超出范围。
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 :(得分:0)
我想通了,我忘了从reflectPixel对象的坐标中减去一个。结果,它被设置为刚好在图片边界之外的像素。