我正在尝试编写一些可以填充字符串列表的东西,因此每个字符串的大小都相同用空格填充非常简单,您只需获得最大长度并用空格填充直到它们相等
但是我的问题是字体不等宽。
例如,如果我们有
aa
万维网
我们会用一个空格填充 aa 并得到
aa
万维网
因为这些字体不等宽,所以它们不起作用。
我编写了一个脚本,试图计算有问题的字符串的物理大小并用空格填充直到大小相等。
StreamReader sr = new StreamReader(@"C:\Users\ben.bodie\Desktop\FontPaddingTest.txt");
var lines = sr.ReadToEnd().Split(new string[] { Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();
sr.Close();
sr.Dispose();
var max = 0;
var spacesize = TextRenderer.MeasureText(" ", new Font("Microsoft Sans Serif", 7.8f));
foreach (var line in lines)
{
var size = TextRenderer.MeasureText(line, new Font("Microsoft Sans Serif", 7.8f));
max = Math.Max(max, size.Width);
}
foreach(var line in lines)
{
var newline = line;
var size = TextRenderer.MeasureText(newline, new Font("Microsoft Sans Serif", 7.8f));
var width = size.Width;
int spacestoadd = 0;
while(max-10 > width)
{
newline = " " + newline;
width = width + spacesize.Width;
spacestoadd++;
}
dataGridView1.Rows.Add(newline, spacestoadd);
}
但是,正如您所看到的,这不起作用
任何想法,将不胜感激
皈依舞
慕标琳琳
相关分类