Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Paint.Font Y Font
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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:

Font.TextHeight("Hola")
 


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:

Dim fuentedeletra As New Font

fuentedeletra = Paint.Font["Arial, 12, True"]
 


Dando error: fuentedeletra No es una matriz.

Debiendo definir fuentedeletra de la siguiente manera:

With fuentedeletra
    .Name = "Arial"
    .Size = 12
    .Bold = True          
  End With
 


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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paint.Font Y Font 
 
También podría haber definido el tipo de letra de otra forma:

Dim fuentedeletra As New Font

fuentedeletra = Font["Arial,Bold, 12"]

 


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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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:

 arial12

Y si cambio a 24...

 arial12negrita

Yo no diría que esta centrado.  
Si usáis un tamaño de 48, ya se nota un montón.

 arial48negrita

A saber cuales serán "condensadas".  A lo mejor con esas no da ese problema.
Las monospace deben ser.

Saludos

DibujarLetras.tar.gz
Descripción: Dibujar letras en DrawingArea 
Descargar
Nombre del archivo: DibujarLetras.tar.gz
Tamaño: 12.97 KB
Descargado: 24 veces
DibujarLetras.tar.gz
Descripción: Dibujar letras en DrawingArea 
Descargar
Nombre del archivo: DibujarLetras.tar.gz
Tamaño: 12.97 KB
Descargado: 24 veces
DibujarLetras.tar.gz
Descripción: Dibujar letras en DrawingArea 
Descargar
Nombre del archivo: DibujarLetras.tar.gz
Tamaño: 12.97 KB
Descargado: 24 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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paint.Font Y Font 
 
Otros experimentos.

 letrasenceldas

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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paint.Font Y Font 
 
Ahora fijaros que pasa si cambio el tipo de letra a monospace...

 usandomonospace

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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 


 noestacentrado

Pues entonces sera otra cosa.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!.

 solucionadocentrado

Domingo, domingooooo de descansooo!  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paint.Font Y Font 
 
No está mal... un hilo con 9 mensajes y todos tuyos, shell... Como monologuista eres imbatible      
 




===================
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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Evitar Que Etiqueta Dentro De Un Frame Her... abarzuaf Controles/Librerías/Componentes 7 Domingo, 28 Febrero 2010, 00:52 Ver último mensaje
Ender
No hay nuevos mensajes Dialog.Font No Me Funciona Enchufadoo General 0 Martes, 21 Septiembre 2010, 03:54 Ver último mensaje
Enchufadoo
No hay nuevos mensajes Ejemplo1 Con Paint Shell General 2 Miercoles, 09 Enero 2013, 19:39 Ver último mensaje
Shell
No hay nuevos mensajes Draw Vs Paint ahtonio General 3 Domingo, 18 May 2014, 09:59 Ver último mensaje
ahtonio
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron