Ваш расчет не удался, потому что, если вы переключаетесь на каждый пиксель, то даже строки, начинающиеся с цвета 0, заканчиваются на цвете 1, что означает, что следующая строка снова будет начинаться с цвета 0.
0101010101010101
0101010101010101
0101010101010101
0101010101010101
etc...
Но поскольку в координатах X и Y любое горизонтальное и вертикальное перемещение на 1 пиксель по шаблону изменит цвет, фактический расчет того, хотите ли вы заполненный или незаполненный пиксель, можно упростить до (x + y) % 2 == 0
.
Функция генерации шахматной доски, которую я поместил ниже, принимает массив цветов в качестве цветовой палитры и позволяет вам указать, какие конкретные индексы из этой палитры использовать в качестве двух цветов для использования в шаблоне.Если вам просто нужно изображение с ничего, кроме двухцветной палитры, содержащей черный и белый, вы можете просто назвать его так:
Bitmap check = GenerateCheckerboardImage(8, 8, new Color[]{Color.Black, Color.White}, 0,1);
Функция генерации:
public static Bitmap GenerateCheckerboardImage(Int32 width, Int32 height, Color[] colors, Byte color1, Byte color2)
{
Byte[] patternArray = new Byte[width * height];
for (Int32 y = 0; y < height; y++)
{
for (Int32 x = 0; x < width; x++)
{
Int32 offset = x + y * height;
patternArray[offset] = (((x + y) % 2 == 0) ? color1 : color2);
}
}
return BuildImage(patternArray, width, height, width, PixelFormat.Format8bppIndexed, colors, Color.Black);
}
BuildImage
Функция, которую я использовал, является функцией общего назначения, которую я сделал для преобразования байтового массива в изображение.Вы можете найти это в этом ответе .
Как объяснено в остальной части этого вопроса и ответах на него, аргумент stride
- это количество байтов в каждой строке изображения.данные.Для построенного 8-битного массива, который мы здесь получили, он просто идентичен ширине, но при загрузке он обычно округляется до кратного 4 и может содержать неиспользуемые байты заполнения.(Функция позаботится обо всем этом, поэтому входной байтовый массив не имеет таких требований.)