0

ここで 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;
4

1 に答える 1

1

ループ変数iは によって制限されpalette.Lengthていますが、 に代入しようとしていますpalette1palette1がと同じ長さであるという保証はありpaletteません。私の推測では、そうではないということです。したがって、あなたの問題です。

于 2011-04-14T15:54:08.953 に答える