位图调色板在索引未出界时抛出索引出界异常
本文关键字:索引 出界 异常 调色板 位图 | 更新日期: 2023-09-27 17:50:17
我知道你必须在这里IndexOutOfBoundsException加载,我通常不会发布关于它的东西,但我刚刚遇到它,同时试图解析数组作为调色板使用以下代码。当i = 0和palette时抛出异常。长度= 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;
您的循环变量i
由palette.Length
限定,但您试图分配给palette1
。没有保证palette1
具有与palette
相同的长度,我的猜测是它没有-因此您的问题。