Как я могу преобразовать длину строки в пиксельные единицы? - PullRequest
26 голосов
/ 16 января 2009

У меня есть такая строка:

string s = "This is my string";

Я создаю отчет Telerik, и мне нужно определить textbox, который является шириной моей строки. Однако свойство размера должно быть установлено в единицу измерения (пиксель, точка, дюйм и т. Д.). Как я могу преобразовать мою длину строки, скажем, в пиксель, чтобы я мог установить ширину?

РЕДАКТИРОВАТЬ: Я пытался получить ссылку на графический объект, но это делается в классе, который наследуется от Telerik.Reporting.Report.

Ответы [ 5 ]

60 голосов
/ 16 января 2009

Без использования элемента управления или формы:

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
19 голосов
/ 26 сентября 2012
Size textSize = TextRenderer.MeasureText("How long am I?", font);
12 голосов
/ 29 апреля 2015

В этом случае я обычно использую грязный, но простой способ:

  • Я добавляю невидимое Label, что его свойство AutoSize равно true - грязная работа -.
  • Когда я хочу получить Width для конкретной строки, я устанавливаю ее на Label.Text.
  • Width из Label даст мне правильное значение.
4 голосов
/ 16 января 2009

Зависит также от шрифта. Длина строки не достаточна.

4 голосов
/ 16 января 2009

Вы можете создать экземпляр графического объекта, используя метод MeasureString(). Но вам нужно будет передать ему имя шрифта, размер шрифта и другую информацию.

...