无效参数使用序列的异常

时间:2015-03-24 18:40:55

标签: c# winforms using-statement

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

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

以下是图像处理的方法(在Code类中):

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(附加:Invalid Parameters

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

  

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

我也尝试过将pictureBox1.ImagethumbnailToolbarButton1.Icon单独放在声明中。

为什么会这样?以及如何防止它导致?

感谢您的帮助! :d

PS:

对于任何拼写错误而感到抱歉,如果我写了一些内容错误&#34;,由于我是StackOverflow的新手。

1 个答案:

答案 0 :(得分:1)

所以,非常简单的回答:

当位图设置为pictureBox1的图像时,它被处理掉。 (感谢@juharr对此发表评论) 由于处理造成图像无效,对于pictureBox&amp;将抛出异常。

如何防止这种情况:

不要使用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;
...