我有以下代码(其中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.Image
或thumbnailToolbarButton1.Icon
单独放在声明中。
为什么会这样?以及如何防止它导致?
感谢您的帮助! :d
PS:
对于任何拼写错误而感到抱歉,如果我写了一些内容错误&#34;,由于我是StackOverflow
的新手。
答案 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;
...