У меня большая проблема с кодом объяснения, в то время как я сделал функцию с двумя циклами, которая делает то же самое. Я отправляю свой код другу, чтобы сказать, можно ли сделать его проще :) Так что я получаю нечто подобное.
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. Пожалуйста, измените тему, если она не очень хорошо указана.