Página 1 de 2
Autor
Mensaje
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Paint.Font Y Font
Buenos días!.
La idea principal de la pregunta es dibujar un texto de unas características determinadas en un DrawingArea.
Cuando centramos un texto en la celda de un gridwiew podemos aprovechar las propiedades de la altura o el ancho
del texto que vamos a escribir en esta para centrarlo.
Intenté usar algo como:
Para saber la altura de la palabra "Hola" o mejor dicho la altura del "rectángulo" que ocupa.
Pero lo cierto, que al escribir Font, no me permite escribir el método de Font.
Otra cuestión. No puedo asignar a un tipo font, algo como esto:
Dando error: fuentedeletra No es una matriz.
Debiendo definir fuentedeletra de la siguiente manera:
Luego asigno a Paint.font el tipo fuente definido.
Public Sub DibujaPalabraCentrada( texto As String )
Dim unrectangulo As New Rect
Dim fuentedeletra As New Font
With unrectangulo
.X = 0
.y = 0
.W = Pizarra.W
.H = Pizarra.H
End With
With fuentedeletra
.Name = "Arial"
.Size = 12
.Bold = True
End With
Paint.Font = fuentedeletra
Paint.Brush = Paint.Color ( Color.Blue )
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2)
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2)
End
Public Sub Pizarra_Draw( )
DibujaPalabraCentrada( "Hola Mundo!" )
End
También seria posible sin tener un tipo de dato Font. Y creo que es la solución.
Public Sub DibujaPalabraCentrada( texto As String )
Dim unrectangulo As New Rect
With unrectangulo
.X = 0
.y = 0
.W = Pizarra.W
.H = Pizarra.H
End With
Paint.Font = Font [ "Arial,Bold, 12" ]
Paint.Brush = Paint.Color ( Color.Blue )
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2)
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2)
End
Public Sub Pizarra_Draw( )
DibujaPalabraCentrada( "Hola Mundo!" )
End
En Paint.Font se almacena el tipo de fuente con el que se va a pintar el texto en ese momento.
Pero cabe la posibilidad que quiera usar distintos de fuentes en un dibujo. Con lo que puede ser una variable
de tipo Font.
El uso del tipo Rect es que estoy acostumbrándome a usar rectángulos.
"Vita est experientia constant"
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#1 Domingo, 29 Abril 2018, 10:49
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
También podría haber definido el tipo de letra de otra forma:
Y no habría usado propiedades.
Complicado saber los nombres de manera simple de las fuentes disponibles para usarlas con
gambas .
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#2 Domingo, 29 Abril 2018, 11:06
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Problemas en el paraíso.
Mi texto no acaba de centrarse si aumento el tamaño de la fuente.
Public Sub Form_Open( )
End
Public Sub DibujaPalabraCentrada( texto As String , nombrefuente As String , negrita As Boolean , tama As Integer , Antialias As Boolean )
Dim unrectangulo As New Rect
Dim fuentedeletra As New Font
With unrectangulo
.X = 0
.y = 0
.W = Pizarra.W
.H = Pizarra.H
End With
fuentedeletra = Font [ CStr ( nombrefuente & "," & CStr ( tama) & "," & CStr ( negrita) & "," & CStr ( Antialias) ) ]
Paint.Font = fuentedeletra
Paint.Brush = Paint.Color ( Color.Blue )
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2 )
' Esto estaba repetido en el código original
' Paint.DrawText(texto, unrectangulo.Center().X - Paint.Font.TextWidth(texto) / 2, unrectangulo.Center().Y - Paint.Font.TextHeight(texto) / 2)
End
Public Sub Pizarra_Draw( )
DibujaPalabraCentrada( "Hola Mundo!" , "Arial" , True , 12, False )
End
Con ese tamaño de fuente:
Y si cambio a 24...
Yo no diría que esta centrado.
Si usáis un tamaño de 48, ya se nota un montón.
A saber cuales serán "condensadas". A lo mejor con esas no da ese problema.
Las monospace deben ser.
Saludos
Descripción:
Dibujar letras en DrawingArea
Descargar
Nombre del archivo:
DibujarLetras.tar.gz
Tamaño:
12.97 KB
Descargado:
25 veces
Descripción:
Dibujar letras en DrawingArea
Descargar
Nombre del archivo:
DibujarLetras.tar.gz
Tamaño:
12.97 KB
Descargado:
25 veces
Descripción:
Dibujar letras en DrawingArea
Descargar
Nombre del archivo:
DibujarLetras.tar.gz
Tamaño:
12.97 KB
Descargado:
25 veces
===================
Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Domingo, 29 Abril 2018, 12:30; editado 3 veces
#3 Domingo, 29 Abril 2018, 11:43
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Otros experimentos.
Puede tener momentos que la letra no queda centrada.
Fijaros en la primera fila, la letra "W".
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#4 Domingo, 29 Abril 2018, 11:56
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Ahora fijaros que pasa si cambio el tipo de letra a monospace...
Fijaros otra vez en la primera fila, la letra "W"...
Vaya.
No por eso, en el ejemplo anterior, aunque elija el tipo del letra Monospace soluciona el problema.
Seguiremos probando...
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Domingo, 29 Abril 2018, 12:04; editado 1 vez
#5 Domingo, 29 Abril 2018, 12:01
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Si trazáramos una línea que vaya de lado a lado del DrawingArea, veriamos que tampoco con un tamaño de letra de 12 esta en el centro.
Public Sub DibujaPalabraCentrada( texto As String , nombrefuente As String , negrita As Boolean , tama As Integer , Antialias As Boolean )
Dim unrectangulo As New Rect
Dim fuentedeletra As New Font
With unrectangulo
.X = 0
.y = 0
.W = Pizarra.W
.H = Pizarra.H
End With
fuentedeletra = Font [ CStr ( nombrefuente & "," & CStr ( tama) & "," & CStr ( negrita) & "," & CStr ( Antialias) ) ]
Paint.Font = fuentedeletra
Paint.Brush = Paint.Color ( Color.Blue )
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2)
Paint.LineWidth = 1
Paint.Brush = Paint.Color ( Color.black )
Paint.MoveTo ( 0, unrectangulo.H / 2)
Paint.LineTo ( unrectangulo.W , unrectangulo.h / 2)
Paint.Stroke
End
Pues entonces sera otra cosa.
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#6 Domingo, 29 Abril 2018, 12:54
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Pues eso....
...
Paint .DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2 , Align.Center )
---
Sin alineación no hay na que hacer!.
Domingo, domingooooo de descansooo!
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#7 Domingo, 29 Abril 2018, 13:00
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Pues como diría Macario...esto no se ha acabado. Si, es que el tipo de letra es la del sistema la que esta usando.
Paleting on debuggin!.
===================
Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Domingo, 29 Abril 2018, 13:14; editado 1 vez
#8 Domingo, 29 Abril 2018, 13:13
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53
Ubicación:
Al otro lado de la pantalla
Re: Paint.Font Y Font
Al final queda así. Que raro me pareció ver Antialasing.
Public Sub DibujaPalabraCentrada( texto As String , nombrefuente As String , bnegrita As Boolean , tama As Integer )
Dim unrectangulo As New Rect
Dim fuentedeletra As New Font
Dim negrita As String
With unrectangulo
.X = 0
.y = 0
.W = Pizarra.W
.H = Pizarra.H
End With
If bnegrita Then
negrita = "Bold"
Else
negrita = ""
Endif
fuentedeletra = Font [ CStr ( nombrefuente) & "," & CStr ( tama) & "," & negrita]
Paint.Font = fuentedeletra
Paint.Brush = Paint.Color ( Color.Blue )
Paint.DrawText ( texto, unrectangulo.Center ( ) .X - Paint.Font .TextWidth ( texto) / 2, unrectangulo.Center ( ) .Y - Paint.Font .TextHeight ( texto) / 2, Align.Center )
Paint.LineWidth = 1
Paint.Brush = Paint.Color ( Color.black )
Paint.MoveTo ( 0, unrectangulo.H / 2)
Paint.LineTo ( unrectangulo.W , unrectangulo.h / 2)
Paint.Stroke
End
Public Sub Pizarra_Draw( )
DibujaPalabraCentrada( "Hola Mundo!" , "Purisa" , True , 24)
End
Link
Saludos
===================
Gambas Básico
"No es un bug, es una característica no documentada"
#9 Domingo, 29 Abril 2018, 13:53
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57
Ubicación:
Granada
Re: Paint.Font Y Font
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
#10 Domingo, 29 Abril 2018, 14:47
Temas parecidos
Temas parecidos
Página 1 de 2
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
No puede crear mensajesNo puede responder temasNo puede editar sus mensajesNo puede borrar sus mensajesNo puede votar en encuestasNo puede adjuntar archivosPuede descargar archivosNo puede publicar eventos en el calendario