如何在UserControl中获取表单截图?

4

我想获取应用程序主窗体的屏幕截图。我使用以下代码实现:

Bitmap bitmap = new Bitmap(MainForm.Width, MainForm.Height);
DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
pictureBox1.Image = bitmap;

我在主窗体中有一些用户控件。使用上面的代码,我只能获取主窗体的截图,无法获取用户控件的截图。

请问有没有人可以建议我如何获得包含用户控件的 Windows 窗体的截图?


1
你在哪里执行这段代码?是在“主窗体”内吗?那么,MainForm是什么?为什么不用“MainForm.DrawBitmap(..”? - Ivan Stoev
你可以使用 Control.DrawToBitmap() - Fabjan
3
水晶球显示您犯了一个标准错误,即在用户控件中使用CreateGraphics()。请改用Paint事件。 - Hans Passant
1个回答

2
这应该可以做到:
private void CaptureForm()
{
    var bmp = new Bitmap(MainForm.Width, MainForm.Height, PixelFormat.Format32bppArgb);

    var g = Graphics.FromImage(bmp);
    g.CopyFromScreen(MainForm.Location.X, MainForm.Location.Y, 0, 0,
                    MainForm.Size, CopyPixelOperation.SourceCopy);

    //Clipboard.SetImage(bmp);

    pictureBox1.Image = bmp;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接