这显示了翻转应该是什么以及镜子应该是什么。
两种镜子的代码:
void mirrorLeftRight()
{
for (int x = 0; x < width/2; x++) {
for (int y = 0; y < height; y++) {
int temp = pixelData[x][y];
pixelData[x][y]=pixelData[width-x][y]
pixelData[width-x][y]=temp;
}
}
}
void mirrorUpDown()
{
for (int x = 0; x < width; x++) {
for (int y = 0; y < height/2; y++) {
int temp = pixelData[x][y];
pixelData[x][y]=pixelData[x][height-y]
pixelData[x][height-y]=temp;
}
}
}
这对镜子来说是否合适?
翻转时,只需使用width
和height
w / o除以2?
答案 0 :(得分:4)
您需要使用width-1-x
代替width-x
,height-1-y
代替height-y
。否则,对于x == 0,您将尝试索引[width],它位于数组之外。
答案 1 :(得分:2)
它不应该工作,因为您只需要使用左侧部分覆盖图像的右侧部分,而交换像素。同样的事情也适用于mirrorUpDown
。
如果你交换它们就会获得一个翻转,如果你覆盖它们就会获得一个镜子。
答案 2 :(得分:0)
上面的代码看起来更像是Flip的正确方法,而不是镜像。
镜像我猜你不会切换像素,而是从一侧复制到另一侧。
使用镜像我猜你需要改变
int temp = pixelData[x][y];
pixelData[x][y]=pixelData[width-x][y]
pixelData[width-x][y]=temp;
仅限于此类
pixelData[x][y]=pixelData[width-x][y]