【问题标题】: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 的类中完成的。

【问题讨论】:

    标签: c# telerik telerik-reporting


    【解决方案1】:

    在这种情况下,我通常使用一种肮脏但简单的方法:

    • 我添加了一个不可见的Label,它的AutoSize 属性是true -肮脏的工作-。
    • 当我想为特定字符串设置Width 时,我将其设置为Label.Text
    • LabelWidth 将为我提供正确的值。

    【讨论】:

    • 兄弟太聪明了!
    【解决方案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 应该是一个静态方法。
    • @Kibbee MeasureString 需要Graphics,因为它考虑了当前的图形转换。
    • 我相信 GraphicsUnit.PointGraphicsUnit.Pixel 的大小不同(不再)
    【解决方案4】:
    Size textSize = TextRenderer.MeasureText("How long am I?", font);
    

    【讨论】:

      【解决方案5】:

      也取决于字体。字符串长度不够。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        • 2013-08-23
        相关资源
        最近更新 更多