回答
您可以得到一个Graphics
对象(使用Control.CreateGraphics()在您想要的文本的容器上),并请拨打MeasureString()
来执行此操作。这是一种相当常见的GDI + 技术。
从MSDN的更多信息:http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx
AFAIK GDI +文本测量有点问题。特别是当使用大小来居中文本不符合要求时。 – CodesInChaos
我使用'MeasureString'方法,现在我得到了一个SizeF类型的返回值,然后将它赋值给PointF,我现在知道宽度但是在PointF中>>>我需要它的cm!我尝试转换它,因为我认为PointF就像Postscript点,但我认为我的转换公式不正确,所以如何在得到poinf的宽度后进行转换! – AshOoO
'PointF'只是'Point'的一个'float'值(即非整数值)。从点转换为厘米应该是可行的(点 - >像素 - > dpi->英寸 - >厘米?),但为什么你需要厘米? –
另一种方式来做到这一点是具有TextRenderer
,并调用其MeasureString
方法,并传递串和字体类型。
MSDN示例:
private void MeasureText1(PaintEventArgs e)
{
String text1 = "Measure this text";
Font arialBold = new Font("Arial", 12.0F);
Size textSize = TextRenderer.MeasureText(text1, arialBold);
TextRenderer.DrawText(e.Graphics, text1, arialBold,
new Rectangle(new Point(10, 10), textSize), Color.Red);
}
注:这仅仅是一个替代的解决方案已经张贴由@Neil巴恩韦尔 的(同样有效)一个(如果您已经有到系统的参考.Windows.Forms在你的项目中,这可能会更方便)。
我认为这只是在Windows应用程序不是类库项目! – AshOoO
@AshOoO我同意,这就是我的答案结尾处的注释全是关于=) – jadarnel27
这将测量当前表单上的文本大小。如果您需要在打印机输出上测量文本大小,则需要使用'e.Graphics.MeasureString(...)'方法。 – AaA
- 1. SSRS - 如何得到一个字符串
- 2. 得到一个字符串
- 3. 如何得到一个数字一个字符串的PHP
- 4. 在bash脚本中,howto得到一个字符串的显示宽度
- 5. 如何从一个字符串得到一个字符串,开始和一个特定的字符串
- 6. 如何获得在java中的字符串的宽度
- 7. C#:如何获得一个字符串的第一个字符?
- 8. 如何获得REGEXP_SUBSTR一个字符串
- 9. 如何获得一个字符的宽度和高度USR坐标
- 10. 将一个字符串分解成子串由固定宽度
- 11. 如何计算多字符串的字体宽度和高度?
- 12. 如何获得字符串的长度[] []
- 13. C#:如何获得字符串中的字符串的长度[]
- 14. 如何得到一个字符串的一部分,在PHP
- 15. 无法得到一个字符串
- 16. 得到一个字符串C++
- 17. 使用window.getSelection得到一个字符串
- 18. preg_match_all得到一个字符串
- 19. 如何在位图中找到绘制字符串的宽度
- 20. 如何使用NSMutableString将字符串填充到固定宽度?
- 21. 得到一个StackPane的宽度
- 22. 得到一个div元素的宽度
- 23. 得到一个字符串中的字符串 - PHP
- 24. C#得到另一个字符串中的字符串
- 25. 找到一个字符串的长度
- 26. 如何获得一个字符串在ObjectiveC中的另一个字符串?
- 27. 获得一个字符串
- 28. 获得一个字符串
- 29. 如何返回一个固定长度的字符串一个字符串的?
- 30. 如何用一个未知长度的字符串替换一个字符串?
可以与此合并:http://stackoverflow.com/questions/5553965/programmatically-measure-string-in-asp-net – digEmAll
测量网站的字符串的大小听起来有问题。无法确定浏览器将显示字体AFAIK的大小。 – davisoa
一个特定的字体不足以知道这一点。您还需要知道哪个渲染器将显示文本。例如,Apple和MS渲染文本的方式非常不同,如果影响文本的图形宽度,我不会感到惊讶。如果你试图在服务器端获得html中显示的文本宽度(因为你的标签似乎暗示),这很可能是不可能的。 – CodesInChaos