Pregunta

Tengo una cadena como esta:

string s = "This is my string";

Estoy creando un informe Telerik y necesito definir un textbox que es el ancho de mi cadena. Sin embargo, la propiedad de tamaño debe establecerse en una Unidad (Pixel, Punto, Pulgada, etc.). ¿Cómo puedo convertir la longitud de mi cadena en, digamos un Pixel para poder establecer el ancho?

EDITAR: he intentado obtener una referencia al objeto gráfico, pero esto se hace en una clase que hereda de Telerik.Reporting.Report .

¿Fue útil?

Solución

Sin usar un control o formulario:

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

O en 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

Otros consejos

Size textSize = TextRenderer.MeasureText("How long am I?", font);

En este caso, generalmente uso una forma sucia, pero simple:

  • Agrego una Label invisible que su propiedad AutoSize es true - trabajo sucio -.
  • Cuando quiero tener el Width para una cadena específica, lo configuro en Label.Text .
  • El Width de la Label me dará el valor correcto.

Depende también de la fuente. La longitud de la cadena no es suficiente.

Puede crear una instancia de un objeto gráfico y usar el método MeasureString () . Pero deberá pasarle el nombre de la fuente, el tamaño de la fuente y otra información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top