首页 新闻 会员 周边 捐助

MeasureString 不准确

0
悬赏园豆:15 [已关闭问题] 浏览: 7786次

我在将字符串(含中文)Draw到一幅图片上时发现这个问题的。

比如一幅图片的宽是400pixel,Graphics对象g的GraphicUnit是Pixel,我要画到图上的字符串是str,我用g.MeasureString(str.SubString(0,i),font)来计算前i个字符的宽度width.当width大于宽度时,停止循环,并将前i个字符画到图片上,查看画完的图片发现图上前i个字符的后面还有很大一段空白(前i的字符的宽度明显小于图片的宽),我这样用MeasureString没问题吧,还是.net的BUG?

 

因为是用在网页上的,所以也没法调用Windows API

Sphinxdwood的主页 Sphinxdwood | 初学一级 | 园豆:185
提问于:2008-10-11 17:55
< > 字节跳动旗下AI助手豆包
分享
其他回答(2)
0

使用Graphic类的MeasureString可以得到在某种字体下,字符串的显示长度。

但对于字符串尾部是空格的地方将会被忽略,无论是全角还是半角。

比如:

" str"与" str       ",使用这个方法来测量时,得出来的Width都是相同的。

可以说是BUG吧!

 

MeasureString并不支持按给定宽度度量所需要的高度的功能,只能量出将所有的字画在一行上的宽度和高度。

可以参考一下:http://blog.joycode.com/sam1111/archive/2004/11/08/38393.aspx

RicoRui | 园豆:3663 (老鸟四级) | 2008-10-13 10:03
0

MeasureString默认情况下确实要偏大一点,需要额外设置stringFormat,举个例子

e.Graphics.MeasureString(text, Font,1000,StringFormat.GenericTypographic)

这样就能正确测量了。

beynol | 园豆:202 (菜鸟二级) | 2013-08-08 23:20
0

不好用,试过了 加了末尾参数仍然不准

boy8199 | 园豆:202 (菜鸟二级) | 2024-11-26 12:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top