C# 用C语言打印标签#

C# 用C语言打印标签#,c#,winforms,printing,C#,Winforms,Printing,我目前正在尝试学习如何使用C#中的打印函数,当我尝试在windows窗体应用程序中打印标签时遇到了一个问题 我想做的是,当我点击按钮1时,我想把标签上的文本(或者画出标签的图像)放到一个可以打印的文档中。 我对编程还是新手,所以这个打印函数对我来说非常混乱 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawS

我目前正在尝试学习如何使用C#中的打印函数,当我尝试在windows窗体应用程序中打印标签时遇到了一个问题

我想做的是,当我点击按钮1时,我想把标签上的文本(或者画出标签的图像)放到一个可以打印的文档中。 我对编程还是新手,所以这个打印函数对我来说非常混乱

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    e.Graphics.DrawString(label1.Text, label2.Text, label3.Text, label4.Text, label5.Text, label6.Text, label7.Text, label8.Text, label9.Text);
}

private void button1_Click(object sender, EventArgs e)
{
    this.printDocument1.PrintPage += new
    System.Drawing.Printing.PrintPageEventHandler
    (this.printDocument1_PrintPage);
}

private void PrintPage(object o, PrintPageEventArgs e)
{
    System.Drawing.Image img = System.Drawing.Image.FromFile("C://gul.PNG");
    Point loc = new Point(10, 10);
    e.Graphics.DrawImage(img, loc);
}

要做到这一点,我需要做哪些不同的事情?

使用
Form.DrawToBitmap()
方法

例如,这样的表单:

按下打印按钮时:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        var pd = new PrintDocument();             
        pd.PrintPage+=(s,ev)=>
        {
            var bmp = new Bitmap(Width, Height);
            this.DrawToBitmap(bmp, new Rectangle(Point.Empty, this.Size));
            ev.Graphics.DrawImageUnscaled(bmp, ev.MarginBounds.Location);
            ev.HasMorePages=false;
        };

        var dlg = new PrintPreviewDialog();
        dlg.Document=pd;            
        dlg.ShowDialog();
    }


}
结果是:


因此,我认为您的printDocument1\u PrintPage(…)将无法工作,因为调用DrawString(…)将找不到包含9个字符串的匹配签名。。。基本上你需要做的是:取一个字体。。。创建一个笔刷。。。并决定开始绘制文本的位置(以点F表示)。。。有关示例,请参见:为了清楚起见。。。我们是说标签是在一行文本中,还是说标签是一个完全样式化的正方形内容,需要进行特殊格式化才能用作某种标签/标签?你真的认为这会起作用吗<代码>e.Graphics.DrawString(label1.Text、label2.Text、label3.Text、label4.Text、label5.Text、label6.Text、label7.Text、label8.Text、label9.Text)