C# 打印windows窗体两个面板的内容的好策略是什么?

C# 打印windows窗体两个面板的内容的好策略是什么?,c#,winforms,printing,C#,Winforms,Printing,我编写了一个C#4.0 Windows窗体应用程序,它创建了两个面板,这两个面板都专门填充了文本标签。我想在我的应用程序中添加一些功能,以便完全按照表单上显示的方式打印这些面板,但我只想打印这些面板及其内容,而不打印表单的背景或其他部分 作为概述特别有用,但到目前为止,我只能打印表单的屏幕截图。包括整个表单、按钮、修剪、背景等。看起来我需要通过创建一个图形对象来“重建”表单(我一般使用这个术语,因为我不确定需要使用什么特定的图形相关类),并以某种方式将面板的内容转移到这个对象中 我的问题是:为了

我编写了一个C#4.0 Windows窗体应用程序,它创建了两个面板,这两个面板都专门填充了文本标签。我想在我的应用程序中添加一些功能,以便完全按照表单上显示的方式打印这些面板,但我只想打印这些面板及其内容,而不打印表单的背景或其他部分

作为概述特别有用,但到目前为止,我只能打印表单的屏幕截图。包括整个表单、按钮、修剪、背景等。看起来我需要通过创建一个图形对象来“重建”表单(我一般使用这个术语,因为我不确定需要使用什么特定的图形相关类),并以某种方式将面板的内容转移到这个对象中


我的问题是:为了构建这个图形对象,我应该研究哪些类和/或方法?了解这一点也很有帮助:在构建PrintDocument对象时,.NET framework或任何库中是否有任何方便的技巧可以自动将结果适配到单个页面?

好的,我找到了一种方法(我的Perl兄弟们喜欢):

将两个面板包装到另一个父面板中。让我们将此面板称为“
parentPanel
”创建一个位图(
memoryBitmap
),其大小为
parentPanel
parentPanel.size

下一步:
parentPanel.DrawToBitmap(memoryBitmap,新矩形(parentPanel.Location,parentPanel.Size

然后,在打印页面事件处理程序中:
e.Graphics.DrawImage(memoryBitmap,0,0)


如果可能有其他人有更好的想法,我将保留此选项。

好的,我找到了一种方法(爱我的Perl兄弟们):

将两个面板包装到另一个父面板中。我们将此面板称为“
parentPanel
”创建一个位图(
memoryBitmap
),其大小为
parentPanel
parentPanel.size

下一步:
parentPanel.DrawToBitmap(memoryBitmap,新矩形(parentPanel.Location,parentPanel.Size

然后,在打印页面事件处理程序中:
e.Graphics.DrawImage(memoryBitmap,0,0)


如果其他人可能有更好的想法,我将保留此选项。

将有助于查看表单的屏幕抓取以及您希望它在打印中的显示方式。将有助于查看表单的屏幕抓取以及您希望它在打印中的显示方式。