使用序列的无效参数异常

Invalid Parameters Execption using sequence

我有以下代码(其中 res.shuffle 是图像,ein.Shuffle 是布尔值,kontrast 是 BackColor 的对比色):

using (Bitmap img = Code.EditImageColor(res.shuffle, (ein.Shuffle ? BackColor : kontrast)))
{
    pictureBox1.Image = img;
    thumbnailToolbarButton1.Icon = Icon.FromHandle(img.GetHicon());
}

这里是图像处理的方法(在Codeclass):

public static Bitmap EditImageColor(Image img, Color color)
{
    Bitmap scrBitmap = new Bitmap(img);
    Color oldcolor;
    Bitmap newBitmap = new Bitmap(scrBitmap.Width, scrBitmap.Height);

    for (int i = 0; i < scrBitmap.Width; i++)
    {
        for (int j = 0; j < scrBitmap.Height; j++)
        {
            oldcolor = scrBitmap.GetPixel(i, j);
            newBitmap.SetPixel(i, j, Color.FromArgb(oldcolor.A, color));
        }
    }

    return newBitmap;
}

但每次我 运行 它都说

System.ArgumentExeption (additional: Invalid Parameters)

指向我的 Program.cs 文件中的 Application.Run(new Form1()); 代码块。

StackTrace: An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll.

我也试过用pictureBox1.ImagethumbnailToolbarButton1.Icon单独站在语句中。

这是为什么造成的?又该如何预防呢?

感谢您的帮助! :D

PS:

很抱歉有任何错别字,如果我写了一些东西 "contently wrong",因为我是 Whosebug 的新手。

所以,非常简单的答案:

当位图被设置为 pictureBox1 的图像时,它被释放。 (感谢@juharr 对此发表评论) disposing导致图片对pict​​ureBox无效,抛出异常

如何防止这种情况:

不要使用 using 语句,始终使用相同的位图即可。

Bitmap imga = ...;
pictureBox0.Image = imga;
pictureBox1.Image = imga;
pictureBox2.Image = imga;
pictureBox3.Image = imga;
imga = ...;
pictureBox4.Image = imga;
pictureBox5.Image = imga;
pictureBox6.Image = imga;
pictureBox7.Image = imga;
...