当前位置:  开发笔记 > 编程语言 > 正文

使用可变宽度字体创建文本列

如何解决《使用可变宽度字体创建文本列》经验,为你挑选了1个好方法。

我正在尝试为将在MSN Messenger上运行的C#应用​​程序创建文本颜色.我正在排队等待所有事情.

这是我想要的输出示例:

1)  Pizza Hut                                            123 Fake St.
2)  Domino's Pizza                                       123 Fake St.
3)  The Cheesecake Cafe                                  123 Fake St.
4)  Capital Pizza & Steakhouse                           123 Fake St.
5)  Funky Pickle Pizza                                   123 Fake St.
6)  Boston Pizza                                         123 Fake St.
7)  Rose Bowl Rouge Lounge                               123 Fake St.
8)  Royal Pizza                                          123 Fake St.
9)  A Columbus Pizza & Donair Inc                        123 Fake St.

但因为它是一个可变宽度的字体,它显示如下:

1)  Pizza Hut                                        123 Fake St.
2)  Domino's Pizza                                   123 Fake St.
3)  The Cheesecake Cafe                                  123 Fake St.
4)  Capital Pizza & Steakhouse                               123 Fake St.
5)  Funky Pickle Pizza                                   123 Fake St.
6)  Boston Pizza                                     123 Fake St.
7)  Rose Bowl Rouge Lounge                               123 Fake St.
8)  Royal Pizza                                          123 Fake St.
9)  A Columbus Pizza & Donair Inc                    123 Fake St.

我已经尝试使用C#string.PadRight()函数以及创建我自己的函数,使用空格和制表符添加填充.两者都可以使用固定宽度字体,但可以使用可变宽度字体.

有没有办法确定给定字体中字符串的宽度?

或者有没有人有任何其他建议?



1> Julien Ronca..:

只需使用TextRenderer类.最简单的情况:

Size size = TextRenderer.MeasureText("Hello world", someFont);

如果您无法访问System.Windows.Fonts Graphics.MeasureString仍然存在,它有一些限制,但应该做的工作:

Bitmap bmp = new Bitmap(1,1);
Graphics graphics = Graphics.FromImage(bmp);
SizeF size = graphics.MeasureString("Hello world", someFont);

但请注意,如果文本的字体和空格必须相同,则可能会出现无法完美对齐文本的情况.我不知道在你的情况下MSN Messenger能做什么,但除非你有权访问至少一部分HTML,否则你将无法获得完美的输出.

您还应该知道,如果您在本地计算机上进行测量并发送给另一台没有安装正确字体的列,您的列将不再像列一样,因此您只能使用所有计算机上显示的基本字体子集.

如果还需要多个操作系统支持,则会出现一些大问题,因为Mac和PC上的Arial字体看起来并没有完全相同(并且测量).

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有