Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以C#为单位计算字符串的显示宽度?_C#_.net - Fatal编程技术网

以C#为单位计算字符串的显示宽度?

以C#为单位计算字符串的显示宽度?,c#,.net,C#,.net,这个问题的Java版本刚刚得到回答,我不知道如何在.net中实现这一点 那么,如何计算C#/.net中字符串的显示宽度呢?在这个问题上,您遇到了与Java问题相同的问题—信息不足!WinForms和WPF之间会有所不同 对于WinForms: 对于WPF,我不确定,但我怀疑它将取决于您绘制文本的确切方式…图形。测量但它有点糟糕,正如解释和改进的那样 您将使用Graphics.MeasureString Windows窗体的另一种替代方法是静态TextRenderer.MeasureText方法

这个问题的Java版本刚刚得到回答,我不知道如何在.net中实现这一点


那么,如何计算C#/.net中字符串的显示宽度呢?

在这个问题上,您遇到了与Java问题相同的问题—信息不足!WinForms和WPF之间会有所不同

对于WinForms:


对于WPF,我不确定,但我怀疑它将取决于您绘制文本的确切方式…

图形。测量
但它有点糟糕,正如解释和改进的那样

您将使用Graphics.MeasureString


Windows窗体的另一种替代方法是静态TextRenderer.MeasureText方法

尽管限制为整数大小,但与Graphics.MeasureString/DrawString duo相比,它(与TextRenderer.DrawText配合使用)渲染的ClearType文本更精确、质量更高。

在WPF中,您将使用它。

Graphics.MeasureString([text to measure],[font to measurement text])

生成的对象将提供以下内容:


其他度量值重载也可用。

在WPF中,您将使用FormattedText。在ASP.NET中,您将如何执行此操作?@Shimmy:在ASP.NET中,这将完全取决于浏览器的功能。这真的不是你在web应用程序中尝试做的那种事情-你应该使用CSS来控制格式。@JonSkeet它不一定要准确,我只需要创建一个函数来组成一个长文件名的摘要,以便截断它并保留扩展名,即msdfjkasdfjhkjhadf。。。pdf@Shimmy:这不是一个准确性的问题-这是一个从服务器端根本无法预测的问题。如果在任何地方,你都需要在客户端进行。但无论如何,这绝对不是一个.NET问题。我建议你问一个新问题,精确地给出你的要求。酷。以前从未听说过TextRenderer。参考:请参阅此线程:和此博客帖子:以了解更多信息。似乎TextRenderer.MeasureText的使用方法适用于.Net WinForms.WinForms控件的大多数用法。WinForms控件公开了一个
CreateGraphics
方法,该方法首先可用于创建
Graphics
对象(其构造函数是私有的),大写文本未正确测量。