收据打印的中心文本

我有一些代码,我用它来打印C#的收据。

下面的代码打印正常,但我正在努力调整左右中心的文本,

Graphics graphics = e.Graphics; Font font = new Font("Courier New", 10); float fontHeight = font.GetHeight(); int startX = 0; int startY = 0; int Offset = 0; graphics.DrawString("Welcome to MSST", new Font("Courier New", 14), new SolidBrush(Color.Black), startX, startY + Offset); Offset = Offset + 20; graphics.DrawString("Recept No :" + receptno + 1, new Font("Courier New", 14), new SolidBrush(Color.Black), startX, startY + Offset); Offset = Offset + 20; graphics.DrawString("Date :" + DateTime.Today, new Font("Courier New", 12), new SolidBrush(Color.Black), startX, startY + Offset); Offset = Offset + 20; graphics.DrawString("------------------------------------------", new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset); Offset = Offset + 20; 

任何人都可以帮我解决文字对齐吗?

更新:这是所需的输出:

  Welcome to MSST Receipt No : 3 Date : 5/24/2014 10:06:22 ------------------------------------------ 

这是你的例子的完整代码,使用三个StringFormats和一个添加的行来显示右对齐文本..我还添加了一个前导数字并将所有内容转换为floats …我使用了一个Panel来绘制并设置布局Rectangle小组的规模。 你应该使用你的打印目标,当然..

在此处输入图像描述

 int receptno = 42; Graphics graphics = e.Graphics; Font font10 = new Font("Courier New", 10); Font font12 = new Font("Courier New", 12); Font font14 = new Font("Courier New", 14); float leading = 4; float lineheight10 = font10.GetHeight() + leading; float lineheight12 = font12.GetHeight() + leading; float lineheight14 = font14.GetHeight() + leading; float startX = 0; float startY = leading; float Offset = 0; StringFormat formatLeft = new StringFormat(StringFormatFlags.NoClip); StringFormat formatCenter = new StringFormat(formatLeft); StringFormat formatRight = new StringFormat(formatLeft); formatCenter.Alignment = StringAlignment.Center; formatRight.Alignment = StringAlignment.Far; formatLeft.Alignment = StringAlignment.Near; SizeF layoutSize = new SizeF(yourPrintAreaWidth - Offset * 2, lineheight14); RectangleF layout = new RectangleF(new PointF(startX, startY + Offset), layoutSize); Brush brush = Brushes.Black; graphics.DrawString("Welcome to MSST", font14, brush, layout, formatCenter); Offset = Offset + lineheight14; layout = new RectangleF(new PointF(startX, startY + Offset), layoutSize); graphics.DrawString("Recept No :" + receptno + 1, font14, brush, layout, formatLeft); Offset = Offset + lineheight14; layout = new RectangleF(new PointF(startX, startY + Offset), layoutSize); graphics.DrawString("Date :" + DateTime.Today, font12, brush, layout, formatLeft); Offset = Offset + lineheight12; layout = new RectangleF(new PointF(startX, startY + Offset), layoutSize); graphics.DrawString("".PadRight(46,'_'), font10, brush, layout, formatLeft); Offset = Offset + lineheight10; layout = new RectangleF(new PointF(startX, startY + Offset), layoutSize); graphics.DrawString("copyright SO", font10, brush, layout, formatRight); Offset = Offset + lineheight10; font10.Dispose(); font12.Dispose(); font14.Dispose();