为了账号安全,请及时绑定邮箱和手机立即绑定

与空格字体相关的 C# 填充字符串

与空格字体相关的 C# 填充字符串

C#
侃侃尔雅 2021-11-07 20:22:43
我正在尝试编写一些可以填充字符串列表的东西,因此每个字符串的大小都相同用空格填充非常简单,您只需获得最大长度并用空格填充直到它们相等但是我的问题是字体不等宽。例如,如果我们有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);        }但是,正如您所看到的,这不起作用任何想法,将不胜感激
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以尝试将 unicode 用于不同的Spaces,有些是完全通用的,与字体无关。


查看完整回答
反对 回复 2021-11-07
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我已经对此进行了一些修补,并认为我已经修复了它


我没有添加空间的大小,而是在添加空格的循环的每次迭代中重新计算大小


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;

                 size = TextRenderer.MeasureText(newline, new Font("Microsoft Sans Serif", 7.8f));

                 width = size.Width;

                spacestoadd++;

            }

            dataGridView1.Rows.Add(newline, spacestoadd);

//img1.sycdn.imooc.com//6187c54c00010e9507730410.jpg

查看完整回答
反对 回复 2021-11-07
  • 2 回答
  • 0 关注
  • 249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信