【发布时间】:2011-10-15 14:06:33
【问题描述】:
我对下面的解释代码有很大的问题,同时我做了两个循环函数来做同样的事情。我将我的代码发送给朋友,告诉我是否可以更简单:) 所以我得到了类似的东西。
Array.Copy(
myImageData
.Select(
(b, index) =>
(
index > rooflimit && index < floorlimit && b == 252 &&
(myImageData[index + width] == 0 || (myImageData[index + width] > 168 && myImageData[index + width] < 173)) &&
myImageData[index - width] == 252 &&
myImageData[index - (2 * width)] == 159
) ? (byte)172 : b
).ToArray(),
rooflimit + 1,
myImageData,
rooflimit + 1,
floorlimit - rooflimit - 1
);
我的循环正在做类似的事情(上面做同样的事情):
- 获得所有像素后,将它们复制到字节数组中
- 查找所有值为 255 的像素,下方像素为 0 或范围为 168-173
- 上面的像素值为 255,上面 2 倍的像素值为 159
- 如果我发现该像素将该值更改为 172
- * 像素检查从第二行开始
[0][1][2],并在最后一行之前完成,以便能够检查当前像素的上下像素*
我几乎了解上面的代码,但是我不明白开头的部分:
rooflimit + 1,
myImageData,
rooflimit + 1,
floorlimit - rooflimit - 1);
所以我请你帮忙,谢谢! PS。如果指定不好,请更改主题。
【问题讨论】:
-
Array.Copy 函数msdn.microsoft.com/en-us/library/z50k9bft.aspx
-
我已经对代码进行了大量的重新格式化。让我们看看它是否更清晰。
标签: c# arrays linq select lambda