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