使用序列的无效参数异常
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());
}
这里是图像处理的方法(在Code
class):
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.Image
或thumbnailToolbarButton1.Icon
单独站在语句中。
这是为什么造成的?又该如何预防呢?
感谢您的帮助! :D
PS:
很抱歉有任何错别字,如果我写了一些东西 "contently wrong",因为我是 Whosebug
的新手。
所以,非常简单的答案:
当位图被设置为 pictureBox1 的图像时,它被释放。 (感谢@juharr 对此发表评论)
disposing导致图片对pictureBox无效,抛出异常
如何防止这种情况:
不要使用 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;
...
我有以下代码(其中 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());
}
这里是图像处理的方法(在Code
class):
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.Image
或thumbnailToolbarButton1.Icon
单独站在语句中。
这是为什么造成的?又该如何预防呢?
感谢您的帮助! :D
PS:
很抱歉有任何错别字,如果我写了一些东西 "contently wrong",因为我是 Whosebug
的新手。
所以,非常简单的答案:
当位图被设置为 pictureBox1 的图像时,它被释放。 (感谢@juharr 对此发表评论) disposing导致图片对pictureBox无效,抛出异常
如何防止这种情况:
不要使用 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;
...