Cómo cambiar el estilo de fuente sin crear una nueva fuente?
Estoy tratando de hacer algo que probablemente sea increíblemente simple, pero todo lo que intento no parece funcionar.
Estoy haciendo una aplicación de Windows Forms que simplemente te permite previsualizar un texto personalizado usando un puñado de fuentes diferentes.
Lo que estoy tratando de hacer es cambiar el estilo de fuente de la etiqueta a cursiva cuando la casilla de verificación esté marcada, manteniendo la fuente actual que tiene.
“Display” es el nombre de mi etiqueta. “Italicscb” es el nombre de la casilla de verificación.
A continuación se muestra el código que estoy utilizando actualmente:
Private Sub Italicscb_CheckedChanged(sender As Object, e As EventArgs) Handles Italicscb.CheckedChanged
If Italicscb.CheckState = CheckState.Checked Then
Display.Font = New Font("Arial", 60, FontStyle.Italic)
Else
If Italicscb.CheckState = CheckState.Unchecked Then
Display.Font = New Font("Arial", 60, FontStyle.Bold)
End If
End If
End Sub
Esto funciona bien, pero requiere que ingrese un nuevo nombre de fuente, lo cual no quiero hacer. He intentado asignar la fuente actual a una variable y usar esa variable, pero me da un error.
Dim CF As Font
CF = Display.Font
If Italicscb.CheckState = CheckState.Checked Then
Display.Font = New Font(CF, 60, FontStyle.Italic)
Else
If Italicscb.CheckState = CheckState.Unchecked Then
Display.Font = New Font(CF, 60, FontStyle.Bold)
End If
End If
También he intentado poner un ciclo if en los botones de opciones individuales de fuente. No hay errores, pero no sucede nada cuando marco la casilla.
If Italicscb.CheckState = CheckState.Checked Then
Display.Font = New Font("Freehand521 BT", 60, FontStyle.Italic)
Else
Display.Font = New Font("Freehand521 BT", 60, FontStyle.Bold)
End If
Si alguien pudiera señalar qué estoy haciendo mal, lo agradecería mucho. Por cierto, estoy haciendo esto para mi trabajo.
Gracias.
davy.ai
Parece que el problema que estás teniendo es con el constructor
New Font()
. El constructor que estás utilizando toma tres argumentos: nombre de la fuente, tamaño de la fuente y estilo de la fuente. Cuando intentas asignar la fuente actual a una variable y pasarla al constructor, estás pasando solo un argumento (la fuente en sí) en lugar de tres, lo cual está causando un error.Para solucionar esto, puedes utilizar la propiedad
FontStyle
de la fuente actual en lugar de crear un nuevo objeto de fuente. Aquí tienes una versión actualizada de tu código que debería funcionar:Este código crea una nueva fuente con la misma familia de fuentes, tamaño y color que la fuente actual, pero con el estilo de fuente especificado. Luego asigna esta nueva fuente a la etiqueta
Display
. ¡Espero que esto te ayude!