我使用Graphics.MeasureString来计算文本的大小。EG:10像素=7.5点。我的问题:大小是根据Graphics.MeasureString点值还是像素值计算出来的? 最佳答案 来自MSDNpage:ThismethodreturnsaSizeFstructurethatrepresentsthesize,intheunitsspecifiedbythePageUnitproperty,ofthestringspecifiedbythetextparameterasdrawnwiththefontparameter
这不是一个舍入问题。差异~5+像素。测试用例字符串:“”MACD(26,12,9)-0.000016”e.Graphics.MeasureString("MACD(26,12,9)-0.000016",SystemFonts.DefaultFont).Width)TextRenderer.MeasureText("MACD(26,12,9)-0.000016",SystemFonts.DefaultFont).Width)结果总是:139.3942134为什么大小相差这么大?我只需要paint方法外的字符串宽度轮。但它应该匹配MeasureString,反之亦然。
我正在生成收据并使用Graphics对象调用DrawString方法来打印出所需的文本。graphics.DrawString(string,font,brush,widthOfPage/2F,yPoint,stringformat);这对于我需要它做的事情来说效果很好。我一直都知道我打印的是什么,所以我可以手动修剪任何字符串,使其适合80毫米的收据纸。然后我不得不添加一些额外的功能,使它更加灵活。用户可以传入将添加到底部的字符串。因为我不知道他们要放什么,所以我只是创建了自己的自动换行函数,它接收要换行的多个字符和字符串本身。为了找出字符数,我正在做这样的事情:floatwidth=