0

我有一个创建标志的 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);    
    }

我不确定打印功能中的任何东西都是原因,但我想不出其他任何东西。

4

1 回答 1

0

我不知道为什么没有呈现 TextBox 内容的问题的答案,但我可以告诉你你做错了。

您应该做的是在您的绘图处理程序中呈现文本并使用单个“就地”文本框来允许用户在表单上的某个位置编辑文本,该位置已移动到位并即时可见用于编辑。

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

这将与你现在所做的完全不同。“正确”地做事总是需要更多的工作。我不想告诉你重做你的申请。如果这是一种学习体验而不是商业产品,那么可以使用您熟悉的东西来破解它。但也许下次你可能会尝试另一种方法。

于 2012-07-17T20:08:49.650 回答