C# 如何打印表单的特定区域?

C# 如何打印表单的特定区域?,c#,winforms,C#,Winforms,我的应用程序显示分组的线性数据。表示法相当简单。用户界面分为几个分组框,其中数据通过文本框和标签显示 现在,我想用一种简单的方式打印数据。我的想法是只打印分组框并调整对齐方式,以便打印的页面看起来更好 可以为WinForms推荐哪些方法,或者是否有最佳实践?是否存在任何预定义的帮助程序类?您可以使用控件.DrawToBitmap()方法为控件生成一个图像,您可以使用e.Graphics.DrawImage()事件处理程序在PrintDocument.PrintPage中将该图像绘制到纸上 从长远

我的应用程序显示分组的线性数据。表示法相当简单。用户界面分为几个分组框,其中数据通过文本框和标签显示

现在,我想用一种简单的方式打印数据。我的想法是只打印分组框并调整对齐方式,以便打印的页面看起来更好


可以为WinForms推荐哪些方法,或者是否有最佳实践?是否存在任何预定义的帮助程序类?

您可以使用
控件.DrawToBitmap()
方法为控件生成一个图像,您可以使用
e.Graphics.DrawImage()
事件处理程序在
PrintDocument.PrintPage
中将该图像绘制到纸上


从长远来看,这不是一个“最佳实践”。打印机的分辨率远远大于监视器。通常为每英寸600点,而不是96点。为了避免控件变成邮票,您必须将位图重新缩放6倍。默认情况下,
PrintDocument
类会这样做。结果是颗粒状的,尤其是在一个典型的手臂长度上查看文本时,文本看起来很差。只有使用
Graphics.DrawString()
才能获得好看的文本。换句话说,编写代码而不是复制位图。有很多报表生成器可帮助您避免编写代码的繁琐。

一种更简单的方法是使用Visual Basic PowerPacks的PrintForm组件。只需在VS的工具箱中找到PrintForm组件,并将其拖到表单的表面上。就这些。

的确如此。VisualStudio可以专门为您描述的情况创建RDF项目。