C# 创建位图时发生异常
我目前正在编写一个程序,它可以创建颜色并将其输出到pictureBox。我在3D for循环中这样做,以创建所有RGB颜色。所有这些都发生在一个幕后工作者身上。我的代码如下所示:C# 创建位图时发生异常,c#,winforms,colors,bitmap,system.drawing,C#,Winforms,Colors,Bitmap,System.drawing,我目前正在编写一个程序,它可以创建颜色并将其输出到pictureBox。我在3D for循环中这样做,以创建所有RGB颜色。所有这些都发生在一个幕后工作者身上。我的代码如下所示: private void ColorWorker_DoWork(object sender, DoWorkEventArgs e) { Color color; String hex; Bitmap image; Invoke((MethodInvoker)delegate { progr
private void ColorWorker_DoWork(object sender, DoWorkEventArgs e)
{
Color color;
String hex;
Bitmap image;
Invoke((MethodInvoker)delegate
{
progressBar1.Maximum = (255 * 255 * 255);
progressBar1.Value = 0;
});
for (int r = 0; r <= 255; r++)
{
for (int g = 0; g <= 255; g++)
{
for (int b = 0; b <= 255; b++)
{
hex = "#FF" + r.ToString("X2") + g.ToString("X2") + b.ToString("X2");
color = System.Drawing.ColorTranslator.FromHtml(hex);
image = new Bitmap((int)nudWidth.Value, (int)nudHeight.Value);
using (Graphics gfx = Graphics.FromImage(image))
using (SolidBrush brush = new SolidBrush(color))
{
gfx.FillRectangle(brush, 0, 0, image.Width, image.Height);
}
Invoke((MethodInvoker)delegate
{
pictureBox1.Image = image;
progressBar1.Value++;
label13.Text = progressBar1.Value + " / " + progressBar1.Maximum;
});
}
}
}
}
当应用程序崩溃时,请在任务管理器中检查内存使用情况-它可能相当大 每次都要清理位图,否则它们会泄漏一些严重的信息
Bitmap previousImage = null;
for(r... g... b...)
{
// ...
Invoke((MethodInvoker) delegate
{
var previousImage = pictureBox1.Image;
pictureBox1.Image = image;
if (previousImage != null)
previousImage.Dispose();
});
}
您是否可以在此处发布完整的异常,包括消息、内部异常和堆栈跟踪?请指出在您的示例代码的哪一行发生异常。添加了一些内容希望足够
Bitmap previousImage = null;
for(r... g... b...)
{
// ...
Invoke((MethodInvoker) delegate
{
var previousImage = pictureBox1.Image;
pictureBox1.Image = image;
if (previousImage != null)
previousImage.Dispose();
});
}