C#WinForm按钮打印label1、label2和label3文本,其中label1和label2是第一行,label3是第二行,且全居于纸张(1X1cm)中间
时间: 2023-10-26 19:16:49 浏览: 88
您可以使用PrintDocument类和PrintPage事件来实现这个功能。下面是一个示例代码:
```csharp
private void printButton_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintPage);
// 设置纸张大小和边距
pd.DefaultPageSettings.PaperSize = new PaperSize("Custom", 100, 100);
pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
// 打印
PrintDialog printDialog = new PrintDialog();
printDialog.Document = pd;
if (printDialog.ShowDialog() == DialogResult.OK)
{
pd.Print();
}
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
// 获取文本
string label1Text = label1.Text;
string label2Text = label2.Text;
string label3Text = label3.Text;
// 创建字体和画笔
Font font = new Font("Arial", 10);
Brush brush = Brushes.Black;
// 计算位置
float x = ev.MarginBounds.Left + (ev.MarginBounds.Width / 2);
float y1 = ev.MarginBounds.Top + (ev.MarginBounds.Height / 4);
float y2 = ev.MarginBounds.Top + (ev.MarginBounds.Height / 2);
// 绘制文本
ev.Graphics.DrawString(label1Text, font, brush, x, y1, new StringFormat() { Alignment = StringAlignment.Center });
ev.Graphics.DrawString(label2Text, font, brush, x, y1 + font.Height, new StringFormat() { Alignment = StringAlignment.Center });
ev.Graphics.DrawString(label3Text, font, brush, x, y2, new StringFormat() { Alignment = StringAlignment.Center });
}
```
在这个示例代码中,我们首先创建了一个PrintDocument对象,并为它的PrintPage事件添加了一个处理程序。在PrintPage事件处理程序中,我们获取了三个Label的文本,然后使用Graphics.DrawString方法在纸张的中心绘制了这些文本。注意,我们使用了StringFormat对象来使文本在水平方向上居中对齐。
最后,我们在printButton_Click事件处理程序中打开了一个PrintDialog对话框,并在用户点击打印按钮后调用了Print方法来开始打印。
阅读全文