我需要一个解决方案,如何在C#上创建WinForm的打印屏幕并将其导出为PNG。
贝斯茨
答案 0 :(得分:3)
我认为blog post会有所帮助。
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);
}
答案 1 :(得分:1)
从未尝试过,但我认为您应该可以使用您创建的PaintEventArgs调用OnPaint(args)
,其中包括要绘制的图像的Graphics,以及包含整个区域的ClipRectangle形式。
这只有在你的表单正确处理绘制消息时才会起作用(即:如果它存储了足够的信息以便能够完全重新绘制窗口),并且它可能只获得客户区域(即:它可能无法获得标题栏或菜单)。