【发布时间】:2017-04-14 03:02:31
【问题描述】:
好的,所以我知道从左上角到右下角的对角线很容易反映过来,您只需通过翻转坐标来转置数组。现在我有这个任务,希望我在对角线上反射一个图片对象。这很容易,我想通了大部分,但我收到一个错误,说我的坐标超出了范围。
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 变量设置为无效坐标。我不知道是哪个。
【问题讨论】:
标签: java