Я знаю, что вы должны загрузить здесь исключение IndexOutOfBoundsException, и я бы не стал публиковать информацию об этом, но я только что натолкнулся на это, пытаясь проанализировать массив как палитру, используя следующий код. Выдает исключение, когда i = 0 и palette.Length = 768, я не могу понять, почему, и я уверен, что этот код работал раньше:
ColorPalette palette1 = bmp.Palette;
for (int i = 0; i < palette.Length; i += 3)
{
if (i != 0)
{
Color b = Color.FromArgb(255, palette[i], palette[i + 1], palette[i + 2]);
palette1.Entries[i/3] = b;
}
else
{
Color b = Color.FromArgb(255, palette[i], palette[i + 1], palette[i + 2]);
palette1.Entries[i] = b;
}
}
bmp.Palette = palette1;
Следующий код работает, но использует меньшую палитру в отдельной функции:
ColorPalette palette1 = bmp.Palette;
for (int i = 0; i < 48; i += 3)
{
if (i != 0)
{
Color b = Color.FromArgb(255, palette[i], palette[i + 1], palette[i + 2]);
palette1.Entries[i / 3] = b;
}
else
{
Color b = Color.FromArgb(255, palette[i], palette[i + 1], palette[i + 2]);
palette1.Entries[i] = b;
}
}
bmp.Palette = palette1;