收据打印的中心文本 [英] Center text for receipt printing
问题描述
我有一些代码用于从 C# 打印收据.
I have some code which I'm using to print a receipt from C#.
下面的代码打印正常,但我正在努力将文本左右对齐,
The code below prints OK but I'm struggling with aligning the text left right and center,
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;
谁能帮我解决文本对齐问题?
Can anyone help me out with text align?
更新:这是所需的输出:
Welcome to MSST
Receipt No : 3
Date : 5/24/2014 10:06:22
------------------------------------------
推荐答案
这是您示例的完整代码,使用三个 StringFormats
和一个添加的行来显示右对齐文本.我也有添加了一个前导数字并将所有内容转换为 floats
.. 我正在使用 Panel
绘制并将布局 Rectangle
设置为面板的尺寸.当然,您应该使用打印目标..
Here is the full code of your example, using three StringFormats
and an added line to show right aligned text.. I have also added a leading number and converted everything to floats
.. I was using a Panel
to draw on and set the layout Rectangle
to the Panel's dimensions. You should use your printing target, of course..
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();
这篇关于收据打印的中心文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!