位图调色板在索引未出界时抛出索引出界异常

本文关键字:索引 出界 异常 调色板 位图 | 更新日期: 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;

位图调色板在索引未出界时抛出索引出界异常

您的循环变量ipalette.Length限定,但您试图分配给palette1。没有保证palette1具有与palette相同的长度,我的猜测是它没有-因此您的问题。