How can I convert a string length to a pixel unit?

我的梦境 提交于 2019-11-27 12:05:38
Tom Anderson

Without using of a control or form:

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));
}

Or in 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
Size textSize = TextRenderer.MeasureText("How long am I?", font);

In this case, I usually use a dirty, but simple way:

  • I add an invisible Label that its AutoSize property is true -dirty work-.
  • When I want to have the Width for a specific string, I set it to the Label.Text.
  • The Width of the Label will give me the correct value.

Depends on the font, too. String length isn't sufficient.

Mitchel Sellers

You can create an instance of a graphics object an use the MeasureString() method. But you will need to pass it the font name, font size, and other info.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!