我有一个创建标志的Winform应用程序。一切正常,看起来很好,除非我打印。我有一个图像,文本框放在它们上面。它们在我的电脑上可见,但在我打印时却看不到。我假设在某种程度上,当我打印图像时,正在“带到前面”。
以下是我的打印功能:
private void btnPrint_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintImage);
pd.Print();
}
void PrintImage(object o, PrintPageEventArgs e)
{
int x = SystemInformation.WorkingArea.X;
int y = SystemInformation.WorkingArea.Y;
int width = this.Width;
int height = this.Height;
Rectangle bounds = new Rectangle(x, y, width, height);
Bitmap img = new Bitmap(width, height);
this.DrawToBitmap(img, bounds);
Point p = new Point(100, 100);
e.Graphics.DrawImage(img, p);
}
我不确定打印功能中的任何内容是什么原因,但我想不出其他任何事情。
答案 0 :(得分:0)
我不知道为什么没有呈现TextBox内容的问题的答案,但我可以告诉你,你做错了“。
您应该做的是在绘图处理程序中渲染文本并使用单个“就地”TextBox,以允许用户在窗体上的某个位置编辑文本,该位置移动到位并使其可见 - 及时编辑。
它要求您的“文档”包含可以呈现的对象列表(如“文本块”),以及在用户尝试操作它们时可以检测到的边界。这与“绘画”程序的工作方式非常相似。
这将完全背离你现在正在做的事情。 “正确”做事总是要做很多工作。我不想告诉你重做你的申请。如果这是一种学习体验而不是商业产品,那么可以使用您熟悉的内容来破解它。但也许下次你可能尝试另一种方法。