C# 如何导出我的表格c的图像#

C# 如何导出我的表格c的图像#,c#,printscreen,C#,Printscreen,我需要一个解决方案如何在C#上制作WinForm的打印屏幕并将其导出为PNG 我想这会有帮助的 using (Bitmap bitmap = new Bitmap(ParentForm.Size.Width, ParentForm.Size.Height)) { using (Graphics g = Graphics.FromImage(bitmap)) { g.CopyFromScreen(new Point(ParentForm.DesktopLocation.

我需要一个解决方案如何在C#上制作WinForm的打印屏幕并将其导出为PNG

我想这会有帮助的

using (Bitmap bitmap = new Bitmap(ParentForm.Size.Width, ParentForm.Size.Height))
{
    using (Graphics g = Graphics.FromImage(bitmap))
    {
      g.CopyFromScreen(new Point(ParentForm.DesktopLocation.X, ParentForm.DesktopLocation.Y), new Point(0, 0), ParentForm.Size);
    }

    bitmap.Save(@"C:\test.jpg", ImageFormat.Jpeg);
}

从未尝试过,但我认为您应该能够使用您创建的PaintEventArgs调用
OnPaint(args)
,该PaintEventArgs包括要绘制的图像的图形,以及包含表单整个区域的ClipRectangle


只有当表单正确处理绘制消息时(即:如果它存储了足够的信息,可以随意完全重新绘制窗口),并且它可能只获取客户端区域(即:它可能无法获取标题栏或菜单)。

如果执行此操作的窗口不是最前面的,那么此副本是否会出现在它前面?非常感谢,这在做了很多搜索之后起到了帮助和作用。但是正如赵所说的,如果表单不是最上面的,那么它就不起作用,如果我最小化只打印一个黑色正方形的表单,那意味着什么呢?是的,我刚刚试过。我认为表单需要激活才能使这个技巧发挥作用。因此,如果您在表单中添加一个复制屏幕的按钮,这将很好,但是如果您想捕获其他表单或使用快捷键,则可能需要使用不同的机制来捕获。我需要自动执行此操作,并且在需要导出时,我正在玩WindowsFormState,所以这对我来说没问题,它正在工作,我要求提高质量。BestsPerhaps不是最优雅的解决方案,但它实际上是你应用程序的打印屏幕。。。此博客文章详细介绍了解决方案