¿Cómo puedo convertir una longitud de cadena en una unidad de píxeles?
-
19-08-2019 - |
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
.
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 propiedadAutoSize
estrue
- trabajo sucio -. - Cuando quiero tener el
Width
para una cadena específica, lo configuro enLabel.Text
. - El
Width
de laLabel
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.