所以我循环遍历copyFrom.pixelData并将其复制到pixelData。
我意识到我需要检查i和j的条件,并让它们不要复制到pixelData [x] [y]的边界,
我需要另外2个循环吗?我试过这个,但是得到了分段错误.. 这是正确的方法吗?
void Image::insert(int xoff, int yoff, const Image& copyFrom, Color notCopy)
{
for (int x = xoff; x < xoff+copyFrom.width; x++) {
for (int y = yoff; y < yoff+copyFrom.height; y++) {
for (int i = 0; i<width; i++) {
for (int j = 0; j<height; j++) {
if (copyFrom.pixelData[i][j].colorDistance(notCopy) > 20)
pixelData[x][y]=copyFrom.pixelData[i][j];
}
}
}
}
}
}
答案 0 :(得分:1)
不,你不需要更多的循环。
而是尝试:
int copywidth = std::min(width, copyFrom.width-xoff);
// likewise copyheight = ...
for( int x = 0; x < copywidth; x++ ) {
// likewise for( int y ...
pixelData[x][y] = copyFrom.pixelData[x+xoff][y+yoff];
}