C#如何获取其他类生成的截图并赋值给窗体的PictureBox控件
问题原因梳理
- 现有
CaptureScreen静态方法无返回值,生成的截图Bitmap属于方法内部局部变量,方法执行完成后外部无法访问到该对象 - 方法定义无参数,调用时传入
screen2参数属于语法错误,无法通过编译 - 即便给方法增加Bitmap类型参数,因为你在方法内部会new新的Bitmap对象,不加
out/ref修饰的情况下,外部传入的变量不会指向你新生成的截图对象 - 你写的
Image方法定义在Screenshot类外部,属于语法错误
修复方案
最简单的方式是调整CaptureScreen方法直接返回生成的截图对象,逻辑更清晰,修改代码如下:
1. 修正Screenshot.cs代码
namespace CatchAreaToImage { class Screenshot { // 修改方法返回值为Bitmap,直接返回生成的截图对象 public static Bitmap CaptureScreen() { Bitmap screen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); // 用using包裹Graphics对象,用完自动释放资源避免内存泄漏 using (Graphics graphics = Graphics.FromImage(screen)) { graphics.CopyFromScreen(0, 0, 0, 0, screen.Size); } return screen; } } }
2. 修正Form1.cs中的点击事件代码
private void button1_Click(object sender, EventArgs e) { // 直接获取方法返回的截图对象,赋值给PictureBox即可 pBArea.Image = Screenshot.CaptureScreen(); // 如果需要保留截图对象后续使用,也可以同时赋值给你定义的全局变量 // screen2 = Screenshot.CaptureScreen(); // pBArea.Image = screen2; }
内容的提问来源于stack exchange,提问作者Winchester
相关产品推荐
相关产品推荐

