Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: bash en 9 Abril 2018, 23:16 pm



Título: Matrix de Pantalla
Publicado por: bash en 9 Abril 2018, 23:16 pm
Hola a tod@s!!
espero que todos anden bien por aqui, me gustaria que me den algun consejo acerca de algo que quiero crear les cuento mi necesidad a ver si me dan ese consejo.

tengo una pantalla de 320 X 480 (en pixeles todo) tengo un matrix (apuntador de c++) sin tamaño asignado supongamos que estoy usando c++ aunque la implementacion puede ser en otro lenguaje. y tengo una variable que maneja el tamaño de la fuente estare usando TTF aun no se que espacion tengo entre caracteres pero podria ser 2px y lo que me gustaria hacer es que esa matrix se le asignaran las columnas y las filas por la cantidad de caracteres especificos dependiendo del tamano de la fuente( se puede omitir el espacio en letras) la verdad ese el problema mas incomodo que he visto me gustaria por favor si es posible unas recomendaciones de ustedes, lo pongo en este foro por que no me gustaria si aparece alguien a limitarme a programadores de c++ o c, lo importante es como se podria implementar el algoritmo, la verdad no tengo nada aun hecho.

Gracias de antemano y disculpen las molestias!!


Título: Re: Matrix de Pantalla
Publicado por: srWhiteSkull en 11 Abril 2018, 12:46 pm
... me gustaria hacer es que esa matrix se le asignaran las columnas y las filas por la cantidad de caracteres especificos dependiendo del tamano de la fuente( se puede omitir el espacio en letras)...

Pues nada, es sencillo, con un cálculo podrías hacer eso.

numDeLetras
numPixelPorLetra
anchoPantallaEnPixels
maxLetrasEnPantalla=anchoPantallaEnPixels/numPixelPorLetra
numFilas=Redondea(numDeLetras/maxLetrasEnPantalla)+1

El problema que puede surgir y que complicaría la cosa es cuando se trabaja con fuentes que no mantienen el mismo ancho. Entonces requeriría, una función que lea desde un bucle letra por letra y vaya tomando los pixels de cada letra o espacio y una vez superado el ancho especificado en pixels incrementara la fila y pusiera el contador a cero y repitiera el proceso.

Si bien quisieramos que las palabras no quedaran cortadas tendríamos que guardar siempre la posición del último espacio encontrado en el conteo de pixels citado antes, letra por letra, y de llegar al ancho especificado cortar la cadena desde el último espacio y comenzar a contear desde ese último espacio y desde ahí comenzaría la siguiente fila.

Así como mejora se podría implementar en el método anterior, si quieres complicarlo aún más, es una vez creada la fila con sus caracteres incrementar los espacios entre palabras de forma equitativa con los pixeles sobrantes que no llegaron hasta el límite del ancho para que el texto no quede alineado a la izquierda o derecha y aproveche todo el ancho, o, simplemente usar esos pixeles para poner un margen automático al comienzo y final de la línea para dejar el texto centrado.

Espero que mis sugerencias te sirvan y suerte con lo que traes entre mano,
un saludo.