C#WinForm按钮打印label1和label2文本在1X1cm的纸张上分两行居中
时间: 2024-02-21 09:59:56 浏览: 78
您可以使用C#WinForm中的PrintDocument类来实现该功能。以下是一个简单的示例代码:
```csharp
private void printButton_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintPage);
PrintDialog printDlg = new PrintDialog();
printDlg.Document = pd;
if (printDlg.ShowDialog() == DialogResult.OK)
{
pd.Print();
}
}
private void PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Font font = new Font("Arial", 10);
Brush brush = new SolidBrush(Color.Black);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
int x = e.MarginBounds.Left;
int y = e.MarginBounds.Top;
int width = e.MarginBounds.Width;
// 打印 label1 的文本
string label1Text = label1.Text;
SizeF label1Size = g.MeasureString(label1Text, font, width, format);
RectangleF label1Rect = new RectangleF(x, y, width, label1Size.Height);
g.DrawString(label1Text, font, brush, label1Rect, format);
// 打印 label2 的文本
string label2Text = label2.Text;
SizeF label2Size = g.MeasureString(label2Text, font, width, format);
RectangleF label2Rect = new RectangleF(x, y + label1Size.Height, width, label2Size.Height);
g.DrawString(label2Text, font, brush, label2Rect, format);
}
```
在此示例中,我们创建了一个打印文档对象,并注册了一个打印页事件处理程序。在事件处理程序中,我们使用Graphics对象绘制文本,并使用StringFormat对象对文本进行居中对齐。我们还使用MeasureString方法测量文本的大小,以便正确地计算每个标签应该占据的矩形区域。最后,我们使用PrintDialog类显示打印对话框,并在用户选择打印机后调用Print方法打印文档。
阅读全文