面板上的绘制到位图为空白
本文关键字:位图 空白 绘制 | 更新日期: 2023-09-27 18:37:14
所以我编写了一个类,该类存储了一些测试结果信息,然后是一个向用户显示该信息的控件。我想在此类上放置一个打印函数,以整页大小绘制控件并打印它。然而,它总是空白的。代码将面板视为控件,因为它可能是某种其他类型的值。我想一定有什么简单的东西我错过了。
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 顺序,但它没有改变任何东西。添加了用于调试的保存调用。看起来它实际上是在渲染面板的背景色,没有任何控件。
编辑:这是在打印的背景下,但我从来没有打印过什么问题。我的错误在于创建位图。我添加的保存行证明了这一点,因为它创建了一个空白位图文件。
将整个事件更改为此
void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Width, printData.Height);
printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(new Point(0, 0), printData.Size));
e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
}
编辑
这是我的整个项目。 我创建了一个名为printData的面板,并添加了两个按钮,将一个事件附加到button1。
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
PrintDocument printDocument = new PrintDocument();
public Form1()
{
InitializeComponent();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
}
void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Width, printData.Height);
printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(new Point(0, 0), printData.Size));
e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
}
private void button1_Click(object sender, EventArgs e)
{
pd.Print();
}
}
}
你必须试试这个,看看它是否有效,否则我今晚将无法入睡!!