`
public Bitmap catchFullScreen()
{ Bitmap r = new Bitmap(SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height);
Rectangle bounds = new Rectangle (0,0,SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height);
using (Bitmap bitmap = new Bitmap(SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
r = bitmap;
pictureBox1.Image = r;
pictureBox1.Update();
pictureBox1.Refresh();
}
pictureBox2.Image = r; // breakpoint 1
pictureBox2.Update(); // breakpoint 2
pictureBox2.Refresh();
}
pictureBox3.Image = r;
pictureBox3.Update();
pictureBox3.Refresh();
return r;
}
` 这是我的截图,但是有些奇怪的事情发生了,picturebox1和2能够捕获,但是picturebox3没有。 更进一步,breakpoint1工作但breakpoint2永远不会到来,
为什么我在使用例程之后不能使用这个位图? 更重要的是它不会返回r? 建议请!
答案 0 :(得分:3)
Bitmap是一个类,它是一个引用类型。当您处置bitmap
时,您也会处置r
。如果您想在处置r
时继续使用bitmap
,请考虑使用Bitmap.Clone之类的内容。