C# 如何将字符串长度转换为像素单位?
我有这样一个字符串:C# 如何将字符串长度转换为像素单位?,c#,telerik,telerik-reporting,C#,Telerik,Telerik Reporting,我有这样一个字符串: string s = "This is my string"; 我正在创建Telerik报告,我需要定义一个文本框,它是我字符串的宽度。但是,size属性需要设置为单位(像素、点、英寸等)。如何将字符串长度转换为像素,以便设置宽度 编辑:我尝试获取图形对象的引用,但这是在继承自Telerik.Reporting.Report的类中完成的。您可以使用MeasureString()方法创建图形对象的实例。但是您需要将字体名称、字体大小和其他信息传递给它。也取决于字体。字符串长
string s = "This is my string";
我正在创建Telerik报告,我需要定义一个文本框
,它是我字符串的宽度。但是,size属性需要设置为单位(像素、点、英寸等)。如何将字符串长度转换为像素,以便设置宽度
编辑:我尝试获取图形对象的引用,但这是在继承自
Telerik.Reporting.Report
的类中完成的。您可以使用MeasureString()
方法创建图形对象的实例。但是您需要将字体名称、字体大小和其他信息传递给它。也取决于字体。字符串长度不足。未使用控件或窗体:
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}
或在VB.Net中:
Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1))
Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point))
End Using
在这种情况下,我通常使用肮脏但简单的方法:
- 我添加了一个不可见的
,它的标签
属性是AutoSize
-脏工作-true
- 当我想为特定字符串设置
宽度时,我将其设置为
Label.Text
标签的
宽度将为我提供正确的值
MeasureString
需要一个Graphics
,因为它考虑了当前的图形转换。我相信GraphicsUnit.Point
和GraphicsUnit.Pixel
的大小不一样(不再)兄弟,真聪明!
Size textSize = TextRenderer.MeasureText("How long am I?", font);