将屏幕区域添加到图像列表中

时间:2013-11-27 03:07:07

标签: c# winforms image list graphics

我正在尝试在定时器的tick函数中将位图图像添加到List<Image>。计时器有一个100ms的刻度,并使用以下代码:

private void GifTimer_Tick(object sender, EventArgs e)
{
    using (var bmp = new Bitmap(selection.Width, selection.Height, PixelFormat.Format32bppPArgb))
    {
        using (var graphics = Graphics.FromImage(bmp)) graphics.CopyFromScreen(selection.Left, selection.Top, 0, 0, bmp.Size);
        images.Add(bmp); //Adds null values apparently.
    }
}

我运行了一些断点调试,发现bmp不为空,并且根据选择具有正确的宽度和高度。我在其他地方使用相同的代码用于其他目的,它按预期工作。但是当这个位图添加到我的列表中时,它会返回null。

我在这里遗漏了什么吗?列表在我的构造函数中初始化为new List<Image>();

1 个答案:

答案 0 :(得分:0)

请勿使用using自动处理您的位图:

var bmp = new Bitmap(selection.Width, selection.Height, PixelFormat.Format32bppPArgb);
using (var graphics = Graphics.FromImage(bmp)) 
  graphics.CopyFromScreen(selection.Left, selection.Top, 0, 0, bmp.Size);
images.Add(bmp);