我正在使用StringBuilder构建一个报告,并且它的详细信息是正确的并且已经对齐 我将使用
private static int paperWidth = 55; //it defines the size of paper
private static readonly string singleLine = string.Empty.PadLeft(paperWidth, '-');
StringBuilder reportLayout;
reportLayout.AppendLine("\t" + "Store Name");
我希望商店名称位于中心位置,并且通过 \ t 使用许多此类更多的场地
在此先感谢。
修改 我想打印像。将名称存储在中心
答案 0 :(得分:2)
如果你正在模拟终端上的标签,你应该这样做 坚持
8 spaces per tab
。制表符转换到下一个 制表位。默认情况下,每8个空格一个。但在大多数炮弹中 您可以轻松地将其编辑为您想要的任意数量的空间
您可以通过以下代码实现此目的:
string tab = "\t";
string space = new string(' ', 8);
StringBuilder str = new StringBuilder();
str.AppendLine(tab + "A");
str.AppendLine(space + "B");
string outPut = str.ToString(); // will give two lines of equal length
int lengthOfOP = outPut.Length; //will give you 15
从上面的例子我们可以说
.Net
\t
的长度为 计算为1
答案 1 :(得分:1)
Tab
是Tab
,其含义由呈现它的应用程序创建。
考虑一个Tab
表示的文字处理器:
转到下一个标签页。
您可以定义制表符停止!
要中心输出不要使用Tabs
,请使用正确的StringFormat
:
StringFormat fmt = new StringFormat()
{ Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
这使文本在两个方向的矩形内部居中:
e.Graphics.DrawString(someText, someFont, someBrush, layoutRectangle, fmt);
或类似的东西..
但看起来好像你想把中心嵌入文本中。
这只有在您真正了解输出过程的所有内容时才有效,即设备,字体和大小以及边距等。
所以无论你做什么,它都可能根本不可靠。
最好的选择可能是放弃纯文本或使用固定数量的空格来“平均”'居中',然后在渲染时注意这个数字。
如果您无法控制渲染,则无效。