如何将字符串长度转换为像素单位?
Posted
技术标签:
【中文标题】如何将字符串长度转换为像素单位?【英文标题】:How can I convert a string length to a pixel unit? 【发布时间】:2010-10-01 21:38:33 【问题描述】:我有一个这样的字符串:
string s = "This is my string";
我正在创建 Telerik 报告,我需要定义一个 textbox
,这是我的字符串的宽度。但是,需要将 size 属性设置为单位(像素、点、英寸等)。如何将字符串长度转换为像素,以便设置宽度?
编辑:我尝试获取图形对象的引用,但这是在继承自 Telerik.Reporting.Report
的类中完成的。
【问题讨论】:
【参考方案1】:在这种情况下,我通常使用一种肮脏但简单的方法:
我添加了一个不可见的Label
,它的AutoSize
属性是true
-肮脏的工作-。
当我想为特定字符串设置Width
时,我将其设置为Label.Text
。
Label
的 Width
将为我提供正确的值。
【讨论】:
兄弟太聪明了!【参考方案2】:您可以使用MeasureString()
方法创建图形对象的实例。但是您需要将字体名称、字体大小和其他信息传递给它。
【讨论】:
我有字体名称、大小等。我查看了 MeasureString 方法,但无法弄清楚如何创建 Graphics 对象引用。我没有表单或控件,我只是想在课堂上解决这个问题。【参考方案3】:不使用控件或表单:
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
【讨论】:
在我看来 MeasureString 应该是一个静态方法。 @KibbeeMeasureString
需要Graphics
,因为它考虑了当前的图形转换。
我相信 GraphicsUnit.Point
和 GraphicsUnit.Pixel
的大小不同(不再)【参考方案4】:
Size textSize = TextRenderer.MeasureText("How long am I?", font);
【讨论】:
【参考方案5】:也取决于字体。字符串长度不够。
【讨论】:
以上是关于如何将字符串长度转换为像素单位?的主要内容,如果未能解决你的问题,请参考以下文章