¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3393 miembros registrados.
El último usuario registrado es nino34.

Nuestros miembros han publicado un total de 79784 mensajes en 11253 argumentos.
Navega con Google Chrome
[DESCARGA]

Bitmap.text_size

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker VX ACE Bitmap.text_size

Mensaje por Metalero el 2014-06-14, 03:24

Como comente un par de veces, estoy desarrollando un framework en el Ace orientado a UI, y junto a eso, como implementacion un menu.

El problema con el que me encuentro, es que la funcion text_size de bitmap (para pre-calcular cuanto va a ocupar un texto dentro de un bitmap en pixeles), me devuelve cualquier cosa, y esta haciendo que tenga que estar agregando un monton de constantes de correccion manual para todas las cosas que deberian posicionarse autoamenticamente segun el temaño de un texto.

Estuve buscando y no encuentro nada al respecto (lo cual me parece raro).

En fin las preguntas son: 
¿A todos les pasa esto, o yo estoy haciendo algo mal?
¿Hay que tener algo en especial en cuenta a la hora de utilizar dicha funcion (yo seteo los valores para el font antes de usar la funcion (fuente, tamaño, si es negrita, etc), y aun asi falla ) ?
¿Conocen algun work-around para solucionar esto?

Gracias-

Edit: agrego un caso tipico de uso, dentro un refresh, como para que vean:

Código:

self.bitmap.font.bold = false
self.bitmap.font.size = FONT_SIZE_MEDIUM
self.bitmap.font.color = WHITE_COLOR
    
textRect = self.bitmap.text_size(@secText) #<- esto me devuelve mal los tamaños, siempre mucho mayores a los que realmente ocupa el texto
textX = [...]
textY = [...]

self.bitmap.draw_text(textX, textY, textRect.width, textRect.height, [...])

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por orochii el 2014-06-14, 03:35

En RPG Maker XP, yo usaba bitmap.text_size(string) y servía bien. En el VX Ace sin embargo, he observado algunos bugs raros con ciertas fuentes. No recuerdo si al usar fuentes con delineado, incluye el delineado en el cálculo xD. O quiza sea en esas fuentes específicas que se estropea. O con las bolds que no tienen una "versión bold física", es decir, si la versión bold es automática y no una fuente por separado.

También que algunas fuentes, diseñadas para verse como "pixel-font", se ven sí o sí emborronadas sin importar lo que use "orz.

No sé si algo de lo que dije te ayude, pero bueno. Perdón.

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Wecoc el 2014-06-14, 03:58

Probé ésto y me cuadra bastante bien en cualquier tamaño, así que no creo que sea culpa de eso, apostaría a que es por la font usada.

Código:
class Bitmap
  alias draw_text_back draw_text unless $@
  def draw_text(*args)
    case args.size
    when 2, 3
      x = args[0].x
      y = args[0].y
      width = args[0].width
      height = args[0].height
      text = args[1]
    when 5, 6
      x = args[0]
      y = args[1]
      width = args[2]
      height = args[3]
      text = args[4]
    end
    self.font.size = 32
    rect = text_size(text)
    rect.x = x
    rect.y = y
    self.fill_rect(rect, Color.new(0, 0, 0, 120) )
    draw_text_back(*args)
  end
end

Wecoc
Administrador
Administrador



Créditos 8265

Gracias : 372

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Metalero el 2014-06-14, 04:27

Probé ese codigo (sacando el font.size que le pusiste de 32, para que use el tamaño que tuviese seteado.. o sea, le saque esa linea), y puse para que se dibujen los textos en Arial, y aun asi los valores estan mal...
Con la fuente que estoy usando yo, el "error" es igual o peor que con una fuente "normal" como Arial.


ARIAL:




Fuente custom: (JURA)



Si a vos realmente se te ve bien bien (o sea, los rectángulos te coinciden perfectamente con el texto), debe ser algo de mi Maker (tengo la versión de Steam)

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Wecoc el 2014-06-14, 14:56

Ya veo el problema, creo.

El problema es que estás usando en el draw_text una width más pequeña de la que le pertoca, y eso implica que las letras se vean más estiradas de lo que en realidad son en la font, es por eso que luego no te coincide con el text_size.

Te he hecho un script que quizá te solucione el problema, permite poner el texto sin el width ni el height y te los calcula él mismo, y si quieres el texto estirado puedes ponerlo con un percent. Al calcular el tamaño del texto pones el mismo percent en corrected_text_size y listo.

Código:
class Bitmap
  def draw_corrected_text(x, y, text, percent=1.0)
    width = corrected_text_size(text, percent).width + 8 # Ese + 8 solo en Ace
    height = corrected_text_size(text, percent).height
    draw_text(x, y, width, height, text, 0)
  end
 
  def corrected_text_size(text, percent=1.0)
    width = (text_size(text).width * percent).to_i
    height = text_size(text).height
    return Rect.new(0, 0, width, height)
  end
end


Spoiler:
Para hacer las pruebas ésta vez usé ésto:
Código:
class Window_Base < Window
  def draw_corrected_text(*args)
    contents.draw_corrected_text(*args)
  end
 
  def draw_actor_name(actor, x, y, width = 112)
    change_color(hp_color(actor))
    # contents.font.name = "Verdana"
    # contents.font.size = 18
    rect = contents.corrected_text_size(actor.name, 1.0)
    rect.x = x
    rect.y = y
    contents.fill_rect(rect, Color.new(0, 0, 0, 120) )
    draw_corrected_text(x, y, actor.name, 1.0)
  end
end


Ojalá te sirva, está quedando de lujo ese menú.

Wecoc
Administrador
Administrador



Créditos 8265

Gracias : 372

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Metalero el 2014-06-14, 20:36


Ya veo el problema, creo.

El problema es que estás usando en el draw_text una width más pequeña de la que le pertoca, y eso implica que las letras se vean más estiradas de lo que en realidad son en la font, es por eso que luego no te coincide con el text_size.


No se si entendi bien lo que quisiste decir. El tamaños que yo le paso al draw_text es siempre el que devuelve el text_size.

De cualquier forma probé lo que me pasaste, y si bien el ancho se corrigio un poco el ancho (con ese +8 que no me gusta nada XD), sigue siendo impreciso

Explicame un poco mejor que es lo que quisiste hacer ahi, o que quisite decir con eso de usar una "width mas pequeña", y capaz lo podemos resolver.

Como sea... si no se puede solucionar no importa, lo dejare con las constantes de correccion, y en algun futuro tal vez implemente un sistema de renderizado de texto custom (con atlases de caracteres) y a la mierda el texto del maker :P

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Wecoc el 2014-06-14, 21:34

Eso último que has dicho suena interesante xD

A ver, sabemos que el draw_text funciona de la siguiente manera:
- Si width es demasiado pequeño (muy pequeño) el texto sale estirado y además cortado.
- Si width es demasiado pequeño (pero no tanto) el texto sale estirado.
- Si el width es el de text_size (+ 8 en el Ace porque es tonto con eso, es cosa del Outline xD Ese + 8 es indepentiente del tamaño y tipo de fuente, en principio) o superior a ese valor el texto queda bien.

De ese modo lo único que hice ahí es hacer que al escribir el texto calculara ya directamente width y height para que quedara bien, no es más que eso el draw_corrected_text, de modo que ahora debería verse mejor.

Para el supuesto aunque raro caso que se quisiera que el texto quedara estirado añadí el percent ese, cuanto más bajo es ese percent más estiradas quedan las letras.

Luego en principio si lo usas no deberías usar para nada text_size ni corrected_text_size porque ya lo usa él solo. corrected_text_size solo es por si te interesa obtener el tamaño de ese texto a ese percent concreto por alguna otra cuestión a parte.

Y sobre ésto último pues debería ser preciso ahora, en el ejemplo que puse antes en spoiler probé de poner el fill_rect debajo del nombre del personaje en menú. Varié percent, tamaño y tipo de fuente y siempre cuadraba, con el único con el que se queda un poco corto es con el Italic.

Wecoc
Administrador
Administrador



Créditos 8265

Gracias : 372

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Metalero el 2014-06-14, 23:56

Mmm... no hay caso, agregue un alias del text_size para que siempre agregue 8 al valor (total despues eso es lo que uso) y sigue estando mal (probe con ambas fuentes, y se ven mal las 2)

Asi se ve con Arial:



Como se ve, tanto el alto como el ancho se ven mal.

[Suspiro] Creo que por ahora lo voy a dejar asi, y va a ser otra excusa para crear el sistema de texto custom (que veo que no te entusiasmo mucho la idea XD)

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por orochii el 2014-06-15, 05:00

¿No será por la cursiva? No sé porqué me viene a la mente que el maldito font_size ignora esas propiedades xD. Y según ví el texto que más tenía problemas o diferencias de ancho era el que estaba en cursiva.

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Metalero el 2014-06-15, 06:08

Si definitivamente, mientras mas porquerias se le agregan al font, peor calcula, pero aun asi, seteando solo la fuente y el tamaño, lo calcula mal.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker VX ACE Re: Bitmap.text_size

Mensaje por Contenido patrocinado Hoy a las 14:06


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.