texto en graficos
aqui nuevamente ahora con otra duda como puedo mostrar una frase o palabra en modo grafico
gracias
gracias
Es todo un tema... ;-)
Si usas las bgi tenes la funcion outtextxy, si usas las GRX tenes otra similar, si usas allegro tenes text_out o algo asi, todas comentadas en la documentacion de las respectibas librerias :-D
Si estas haciendo tus propias librerias graficas (por ejemplo en 320x200) te tenes que arreglar del siguiente modo :-(
Para fots de 8x8 hacer un array de (8*n) letras que sea del tipo byte (unsigned char :-) si queremos 256 caracteres el arreglo sera de 2048 unsigned char' s
Entonces con la calculadora cientifica en mano y MUCHA paciencia te pones a sacar los valores para cada byte que contendra 8 pixeles asi:
# pixel apagado
X pixel prendido
###XX###
##X##X##
#X####X#
X#####X#
XXXXXXX#
X#####X#
X#####X#
########
Para no tener que usar la calculadora podes definir los bytes con este macro:
#define nrobin(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0))
Entonses la a ceria:
unsigned char *fuente = {
...
nrobin(0,0,0,1,1,0,0,0),
nrobin(0,0,1,0,0,1,0,0),
nrobin(0,1,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,1,1,1,1,1,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(0,0,0,0,0,0,0,0),
...
};
y la funcion para poner un caracter seria:
void putgrchar (int x, int y, char c)
{
int i, j;
char *ptr = fuente[c*8];
for (i=0; i<8; i++) {
for (j=0; j<8; j++) {
if (ptr & (1<<j)
putpixel(x+j,y+i,color_fuente);
}
}
Cambiando el val9or de la variable global color_fuente cambia el color del dibujo de las letras...
Creo que funcionaba pero si no funciona pongan lo que pasa y lo vemos hace mucho que no uso estas rutinas :-(
Si usas las bgi tenes la funcion outtextxy, si usas las GRX tenes otra similar, si usas allegro tenes text_out o algo asi, todas comentadas en la documentacion de las respectibas librerias :-D
Si estas haciendo tus propias librerias graficas (por ejemplo en 320x200) te tenes que arreglar del siguiente modo :-(
Para fots de 8x8 hacer un array de (8*n) letras que sea del tipo byte (unsigned char :-) si queremos 256 caracteres el arreglo sera de 2048 unsigned char' s
Entonces con la calculadora cientifica en mano y MUCHA paciencia te pones a sacar los valores para cada byte que contendra 8 pixeles asi:
# pixel apagado
X pixel prendido
###XX###
##X##X##
#X####X#
X#####X#
XXXXXXX#
X#####X#
X#####X#
########
Para no tener que usar la calculadora podes definir los bytes con este macro:
#define nrobin(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0))
Entonses la a ceria:
unsigned char *fuente = {
...
nrobin(0,0,0,1,1,0,0,0),
nrobin(0,0,1,0,0,1,0,0),
nrobin(0,1,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,1,1,1,1,1,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(1,0,0,0,0,0,1,0),
nrobin(0,0,0,0,0,0,0,0),
...
};
y la funcion para poner un caracter seria:
void putgrchar (int x, int y, char c)
{
int i, j;
char *ptr = fuente[c*8];
for (i=0; i<8; i++) {
for (j=0; j<8; j++) {
if (ptr & (1<<j)
putpixel(x+j,y+i,color_fuente);
}
}
Cambiando el val9or de la variable global color_fuente cambia el color del dibujo de las letras...
Creo que funcionaba pero si no funciona pongan lo que pasa y lo vemos hace mucho que no uso estas rutinas :-(
