2012-07-17 75 views
0

我有一个Winform应用程序创建标志。除了当我打印时,一切正常,看起来很好。我有一个图像,其上放置了文本框。它们在我的计算机上可见,但在打印时不会显示。我假设在某种程度上,当我打印图像变得“从前到后”。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

我不知道为什么TextBox内容没有被渲染的问题的答案,但我可以告诉你,你做的是“错误的”。

你应该做的是在你的绘图处理器中渲染文本,并使用一个“就地”的文本框来允许用户在窗体上的某个位置编辑文本,并将其移动到位置并使其可见即时编辑。

它要求您的“文档”包含您可以呈现的对象列表(如“文本块”),并且您可以在用户尝试操纵它们时检测边界。这与“绘画”程序的工作方式非常相似。

这将与您现在正在做的事情完全背离。做正确的事情总是有很多工作要做。我不想告诉你重做你的应用程序。如果这是一种学习体验,而不是商业产品,那么可以用你熟悉的方法破解它。但是,下次你可能会尝试另一种方法。