none
Aumentar tamaño de fuente hasta el tamaño del RichTextBox RRS feed

  • Pregunta

  • Hola a todos.

    Pido su colaboración para poder solucionar lo siguiente.

    Tengo un RichTextBox al cual le estoy enviando diversos tamaños de cadenas y la idea es que el RichTextBox adecue el tamaño de fuente máximo sin generar ScrollBars independientemente de la cadena que se le envié, de modo tal que ocupe todo el RichTextBox pero sin generar las ScrollBars.

    Saludos

    • Cambiado Enrique M. Montejo jueves, 8 de diciembre de 2016 11:08 Pregunta relacionada con controles de Windows Forms.
    martes, 6 de diciembre de 2016 16:24

Respuestas

  • Hola a todos.

    Bueno, después de mucho buscar y combinar cosas, lo he solucionado de la siguiente manera, este código lo que hace es tomar las medidas en pixeles del texto e ir comparando con las medidas del contenedor, de tal forma que si aún es mas pequeño aumenta el tamaño de la letra y vuelve a comparar. De esta forma, cuando determine que el tamaño del texto es mayor que el contenedor, el ciclo se rompe y deja nuestro texto al tamaño máximo sin generar scrollBars.

        Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
            Dim inCr As Integer = 0 'Porción de incremento en el tamaño de la fuente
            Dim objBmp As New Bitmap(1, 1) 'Objeto para la imagen a partir del texto
            Dim Width As Integer = 0 'Ancho de la imagen a partir del texto
            Dim Height As Integer = 0 'Alto de la imagen a partir del texto
            Dim WidthRich As Integer = txtModerador.Width 'Ancho del contenedor
            Dim HeightRich As Integer = txtModerador.Height 'Alto del contenedor
            Dim currentFont As System.Drawing.Font = txtModerador.SelectionFont 'Fuente actual del contenedor
            Dim objGraphics As Graphics = Graphics.FromImage(objBmp) 'Objeto contenedor de la imagen
    
            'Obtenemos el Ancho y Alto que tendría el texto al pasarlo a imagen
            Width = CInt(objGraphics.MeasureString(txtModerador.Text, txtModerador.SelectionFont).Width)
            Height = CInt(objGraphics.MeasureString(txtModerador.Text, txtModerador.SelectionFont).Height)
    
            'Vamos aumentando el tamaño de letra hasta que llene todo el contenedor sin pasarse
            While Width + CInt(objGraphics.MeasureString(txtModerador.Text, txtModerador.SelectionFont).Width) < WidthRich And Height < HeightRich
                'Asignamos la nueva medida al texto
                txtModerador.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size + inCr, currentFont.Style)
                'Incrementamos en 1 el tamaño de letra
                inCr += inCr + 1
                'Actualizamos las medidas del texto con el nuevo tamaño de fuente
                Width = CInt(objGraphics.MeasureString(txtModerador.Text, txtModerador.SelectionFont).Width)
                Height = CInt(objGraphics.MeasureString(txtModerador.Text, txtModerador.SelectionFont).Height)
            End While
        End Sub


    • Editado bralm05 viernes, 9 de diciembre de 2016 17:59
    • Marcado como respuesta bralm05 viernes, 9 de diciembre de 2016 18:00
    viernes, 9 de diciembre de 2016 17:58