Hi Bob Bao,
在使用WPF的RichTextBox时,发现对齐是一件很困难的事情,同样的格式化输出(比如Padleft和PadRight等),在Console.writeline和输出到文本文件中(如果字体不一样,显示有可能就对不齐了)是OK的。
做过一些实验,使用RichTextBox对齐,发现大小写字母、数字等占位个数不一样。当内容是变量变化时,有时输出数字,有时输出字母,那就对不齐了。
好像C#在WinForm中的TextBox中是OK的?
是的,WPF中文字的绘制基于的是字体的字形信息,而不是像GDI模式下的基于屏幕位置的字体绘制。而且我们知道,系统中依据字形宽度分两种类型的字体, 等宽字体和非等宽字体,现代来说,非等宽字体看上去比较美观,但是难以控制每行的字符个数,和你这里的对齐问题。 这些问题在等宽字体中是不存在的。
WPF的RichTextBox使用的是FlowDocument流文档形式,他会依据内容的不同来动态的显示和分布内容区域。这一点跟Word软件是一致的,他会根据每行宽度来计算显示单词的数量。如果你是使用了等宽字体,效果会好很多。
Thanks Bob.
改为等宽字体(如Courier New等)后,可以对齐了。