所以我写了一个类,它有一个存储一些测试结果信息,然后是一个向用户显示该信息的控件。我想在这个类上放置一个打印功能,以全页大小绘制控件并打印它。然而,它总是出现空白。代码将面板视为控件,因为它可能是其他类型的值。我想一定有一些简单的东西我错过了。
void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Size oldSize = printData.Size;
printData.Size = new System.Drawing.Size(e.MarginBounds.Width, e.MarginBounds.Height);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Size.Width, printData.Size.Height);
InvertZOrderOfControls(printData.Controls);
printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, printData.Size.Width, printData.Size.Height));
InvertZOrderOfControls(printData.Controls);
e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
bitmap.Save(@"C:\Users\jdudley\Documents\File.bmp");
printData.Size = oldSize;
}
按照这个线程的这个建议,颠倒了控件的 Z 顺序,但它没有改变任何东西。添加了保存调用以进行调试。看起来它实际上是在没有任何控件的情况下渲染面板的背景颜色。
编辑:这是在印刷的背景下,但我从来没有印刷过任何问题。我的错误是创建位图。我添加的保存行证明了这一点,因为它创建了一个空白位图文件。