c# - recortar - Encuentra el ancho del char en píxeles para varias fuentes Arial
recortar string c# (3)
No estoy seguro de su pregunta si desea una forma de medir el tamaño de una cadena específicamente usando PDF #, o simplemente de una manera genérica.
En general .Net, puede usar el método MeasureText
de la clase TextRenderer
(desde formularios de Windows):
TextRenderer.MeasureText("some text", new Font("Arial", 1.0f, FontStyle.Regular))
Esto devolverá una instancia de Size
que contendrá Width=12, Height=2
.
Tengo un programa que genera manualmente un PDF usando PDFsharp en C #. Aunque es bastante tedioso, tengo que usarlo y estoy a punto de completar la tarea. Solo queda un problema.
Problema: me pregunto cómo puedo averiguar cuál es el ancho de un dado dado para un tamaño de letra dado en Arial.
Tengo problemas para encontrar un método de ajuste de texto más preciso. En este momento, uno define el ancho del cuadro en píxeles y luego procede a escribir una cadena en ese cuadro. Simplemente adivino la longitud máxima de la cuerda que cabe en la caja y hay algunas rarezas visuales que surgen de vez en cuando.
¿Alguna ayuda?
Gracias
XGraphics.MeasureString (string s, Font f) hace el truco.
//l_Page is of type PdfPage
var l_Graphics = XGraphics.FromPdfPage( l_Page );
var l_TitleFont = new Font( "Arial", 15f, GraphicsUnit.World )
var l_Title = "Hallo Welt";
//l_TitleSize will be of type XSize and has properties for Width and Height
var l_TitleSize = l_Graphics.MeasureString( l_Title, l_TitleFont );
En los días de las fuentes True Type con interletraje, etc., no hay un solo ancho de carácter. El ancho de la cuerda "VA" es probablemente menor que la suma de los anchos de las cuerdas "V" y "A". Resumiendo los anchos si los personajes individuales son un punto de partida, pero finalmente debe medir la cadena completa.
PDFsharp incluye la clase XTextFormatter (con código fuente completo) que hace este ajuste de línea. Se puede adaptar a requisitos específicos. Utiliza gfx.MeasureString(token, this.font).Width
para medir el ancho de una cadena.