报告界面:(界面引入PrintDialog、PrintPreviewDialog、PrintDocument控件)
![](https://img-blog.csdnimg.cn/img_convert/e362f3f51b1051fca82649611bb392d2.png)
打印预览按钮代码
private void btnPrintPreview_Click(object sender, EventArgs e)
{
PaperSize ps = new PaperSize("Custom Size 1", panel1.Width, panel1.Height+50);
//将缺省的纸张设置为新建的自定义纸张
printDocument1.DefaultPageSettings.PaperSize = ps;
printPreviewDialog1.Document = printDocument1;
try
{
printPreviewDialog1.Width = Screen.PrimaryScreen.Bounds.Width;
printPreviewDialog1.Height = Screen.PrimaryScreen.Bounds.Height;
printPreviewDialog1.ShowDialog();
}
catch (Exception ex)
{
}
}
打印按钮代码:
private void btnPrint_Click_1(object sender, EventArgs e)
{
btnPrintPreview.Enabled = false;
btnPrint.Enabled = false;
this.printDialog1.Document = this.printDocument1;
if (this.printDialog1.ShowDialog() == DialogResult.OK)
{
try
{
this.printDocument1.Print();
}
catch (Exception ex)
{
}
}
btnPrintPreview.Enabled = true;
btnPrint.Enabled = true;
}
PrintDocument控件,BeginPrint事件以及PrintPage事件
private int iPrintStatus;
private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
{
if (e.PrintAction == PrintAction.PrintToPreview) //打印预览
iPrintStatus = 1;
else if (e.PrintAction == PrintAction.PrintToPrinter)//打印机直接打印
iPrintStatus = 2;
else if (e.PrintAction == PrintAction.PrintToFile)//打印到文件
iPrintStatus = 3;
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
using (Bitmap _NewBitmap = new Bitmap(panel1.Width, panel1.Height))
{
_NewBitmap.SetResolution(1980, 1024); //分辨率
panel1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
if (iPrintStatus == 2)
e.Graphics.PageScale = 0.667f; //1 打印到纸上的缩放比例
e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height);
}
}
5.打印预览效果(打印预览效果,就是打印到A4纸的效果):
![](https://img-blog.csdnimg.cn/img_convert/b8cf631f97d9ccb94b8175c1e5cfbfc2.png)