miércoles, 25 de abril de 2012

Tema 8


Estructuras del modo gráfico.

Estructura arccoordstype

struct arccoordstype {
int x, y;
int xstart, ystart;
int xend, yend;
};

Los miembros x e y definen el centro del arco. Los miembros xstart e ystart definen las coordenadas x e y del punto de comienzo del arco. Similarmente, los miembros xend e yend definen las coordenadas x e y del punto de final del arco.

Esta estructura se usa como parámetro en la función getarccoords, que se usa para recoger las coordenadas del centro, y los puntos del comienzo y final de la última llamada con éxito a la función arc.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA,modo = EGAHI,radio;
struct arccoordstype info_arco;
initgraph( &driver, &modo, "C:\\tc20\\BIN" );
for( radio=25; radio<=100; radio+=25 ) {
arc( 300, 150, 45, 315, radio );
getarccoords( &info_arco );
moveto( info_arco.xstart, info_arco.ystart );
lineto( info_arco.xend, info_arco.yend );
}
getch(); /* Pausa */
closegraph();
}

Estructura fillsettingstype

struct fillsettingstype {
int pattern;
int color;
};

Esta estructura se usa para obtener la información de tramas de relleno, mediante getfillsettings.
El campo pattern es la trama y el campo color es el color de relleno de la trama. Existen trece valores ya definidos para tramas.



Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int gdriver = EGA,gmodo = EGAHI;
struct fillsettingstype info;
initgraph( &gdriver, &gmodo, "C:\\tc20\\BIN" );
getfillsettings( &info );
bar( 50, 50, 350, 300 );
getch(); /* Pausa */
closegraph();
printf( "Trama de relleno: %d\tColor de relleno: %d\n",
info.pattern, info.color );
getch();
}

Estructura linesettingstype.

struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
}

Esta estructura se usa para obtener la información actual para las líneas mediante la función getlinesettings. El campo linestyle es el estilo de la línea recta. El campo upattern es la trama de la línea del usuario solamente cuando el campo linestyle es igual a USERBIT_LINE, ó 4. Cuando esto sea el caso, el miembro upattern contiene una trama de línea definido por el usuario de 16 bits. Un bit 1 en esta trama indica que el píxel correspondiente será asignado el color actual. Un bit 0 indica que el píxel correspondiente no será alterado. El campo thickness es el grosor de la línea.

Existen varios valores para los diferentes estilos y grosores de líneas rectas.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int gdriver = EGA;
int gmodo = EGAHI;
struct linesettingstype info;
initgraph( &gdriver, &gmodo, "C:\\tc20\\BIN" );
setlinestyle( DOTTED_LINE, 0xFF33, THICK_WIDTH );
circle( 350, 250, 50 );
getlinesettings( &info );
getch(); /* Pausa */
closegraph();
printf( "Líneas rectas.\nEstilo: %d\tTrama: %X\tGrosor: %d\n",info.linestyle, info.upattern, info.thickness );
getch();
}

Estructura palettetype

#define MAXCOLORS 15
struct palettetype {
unsigned char size;
signed char colors[MAXCOLORS+1];
};

Esta estructura se usa para obtener una los datos que definen la paleta según cada dispositivo.
El campo size indica el tamaño de la paleta. El campo colors contiene los valores numéricos que representan los colores que ofrece el dispositivo en su paleta de colores.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h&t;
void main() {
int driver = EGA,modo = EGAHI,i;
struct palettetype *palette = NULL;
initgraph( &driver, &modo, "C:\\tc20\\BIN" );
palette = getpalettetype();
circle( 300, 150, 50 );
getch(); /* Pausa */
closegraph();
printf( "Paleta\n\nTamaño: %d\nColores: %d",
palette->size, palette->colors[0] );
for( i=1; i<palette->size; i++ )
printf( ", %d", palette->colors[i] );
printf( "\n" );
getch();
}

Estructura textsettingstype

struct textsettingstype {
int font;
int direction;
int charsize;
int horiz;
int vert;
};

Esta estructura se usa para obtener información acerca de la fuente gráfica actual mediante la función getextsettings. Esta estructura contiene información de la fuente actual en uso, la orientación del texto, el tamaño del carácter, y la justificación horizontal y vertical.
Existen varios valores para describir el tipo, la orientación, y justificación de fuentes.

Ejemplo:

#include <graphics.h>
#include <stdio.h>
void main() {
int driver = EGA,modo = EGAHI;
struct textsettingstype info;
initgraph( &driver, &modo, "C:\\tc20\\BIN" );
gettextsettings( &info );
closegraph();
printf( "Texto\n\nFuente: %d\tSentido: %d\tTamaño: %d\n"
"Justificación:\nHorizontal: %d, Vertical: %d\n",
info.font, info.direction, info.charsize, info.horiz, info.vert);
getch();
}

Estructura viewporttype

struct viewporttype {
int left, top;
int right, bottom;
int clip;
};
Esta estructura se usa para obtener información acerca del área gráfica actual mediante la función getviewsettings. Esta estructura contiene información acerca de las esquinas superior izquierda e inferior derecha, también como el banderín de recorte del área gráfica.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver =IBM8514LO,modo=IBM8514HI;
struct viewporttype info;
initgraph( &driver, &modo, "C:\\tc20\\BIN" );
getviewsettings( &info );
closegraph();
printf( "Pantalla\n\nIzquierda: %d\tSuperior: %d\tDerecha: %d\t"
"Inferior: %d\tBanderín: %d\n",
info.left, info.top, info.right, info.bottom, info.clip);
getch();
}


Estructura time

struct viewporttype {
int left, top;
int right, bottom;
int clip;
};
Esta estructura se usa para obtener información acerca del área gráfica actual mediante la función getviewsettings. Esta estructura contiene información acerca de las esquinas superior izquierda e inferior derecha, también como el banderín de recorte del área gráfica.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver =IBM8514LO,modo=IBM8514HI;
struct viewporttype info;
initgraph( &driver, &modo, "C:\\tc20\\BIN" );
getviewsettings( &info );
closegraph();
printf( "Pantalla\n\nIzquierda: %d\tSuperior: %d\tDerecha: %d\t"
"Inferior: %d\tBanderín: %d\n",
info.left, info.top, info.right, info.bottom, info.clip);
getch();
}

Tema 7

Continuación del tema 6

Función setusercharsize

void far setusercharsize(int x_dividendo, int x_divisor,int y_dividendo, int y_divisor);

Esta función extablece las características de fuentes escalables. Para que esta función afecte el tamaño del carácter, el argumento tam_caracter de la función settextstyle debe ser 0. La anchura del carácter se establece con los argumentos x_dividendo y x_divisor que representan la proporción. Similarmente, los argumentos y_dividendo e y_divisor especifican la altura del carácter.

La función setusercharsize no retorna ningún valor.
Ejemplo:
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
char mensaje[40];
char nombre[25];
printf( "Escribe tu nombre: " );
scanf( "%s", nombre );
sprintf( mensaje, "Hola %s!", nombre );
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
settextstyle( SANS_SERIF_FONT, 0, 0 );
setusercharsize( 1, 4, 1, 2 ); /* 25% de ancho; 50% de alto */
outtextxy( 100, 50, mensaje );
settextstyle( SANS_SERIF_FONT, 0, 1 );
outtextxy( 100, 125, mensaje );
settextstyle( SANS_SERIF_FONT, 1, 0 );
setusercharsize( 1, 2, 3, 4 ); /* 50% de ancho; 75% de alto */
outtextxy( 400, 150, mensaje );
getch();
closegraph();
getch();
}

Función setviewport

void far setviewport(int izquierda, int superior,int derecha, int inferior, int recorte_banderin);
Esta función es usada para definir el área gráfico. La esquina superior izquierda del área gráfica está definida por los argumentos izquierda y superior. Estos argumentos corresponden a los valores x e y de la esquina superior izquierda. Similarmente, los argumentos derecha e inferior definen la esquina inferior derecha del área gráfica. El argumento recorte_banderin define si los datos para la salida gráfica serán recortados por el borde del área gráfico. Un valor de 0 para recorte_banderin indica que los datos de salida no serán recortados, mientras que un valor distinto a 0 indica que los datos serán recortados. Cuando el área gráfica es inicializada, la posición del cursor será mudado a la posición (0,0) (la esquina superior izquierda). Todos los datos de salida
después de que el área gráfica haya sido inicializada serán con relación a este punto. El área gráfica por defecto cubre la pantalla entera.

La función setviewport no retorna ningún valor; sin embargo, si los valores pasados son inválidos, entonces la función graphresult retorna grError (-11) y el área gráfica no será alterada.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA, modo = EGAHI;
initgraph( &driver, &modo, "C:\\TC20\\BIN" );
lineto( 100, 100 );
outtextxy( 15, 5, "Inicial" );
getch();
setviewport( 250, 200, 450, 300, 0 );
setcolor( 9 );
lineto( 100, 100 );
outtextxy( 15, 5, "Nueva" );
moveto( 0, 0 );
lineto( -50, -20 ); /* Fuera del área */
getch();
setviewport( 250, 200, 450, 300, 1 );
setcolor( 4 );
moveto( 120, 40 );
lineto( 150, -20 ); /* Fuera del área */
outtextxy( 25, 15, "Con recorte" );
getch(); /* Pausa */
closegraph();
getch();
}

Función setvisualpage

void far setvisualpage(int pagina);

Esta función es usada para establecer la página visual como es especificado por el argumento pagina. Una página es una sección de memoria donde se guarda la información del vídeo. Cuando se usa con un sistema (EGA o VGA) con suficiente memoria de vídeo para soportar múltiples páginas de gráficos, la función setvisualpage (junto con la función setactivepage) permite al programador crear gráficos en páginas escondidas y pasar de página entre las que se han definido con información gráfica. Esto es la base para crear animación.

La función setvisualpage no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
int visual=1;
printf( "Instrucciones:\nPulsa el espacio para cambiar de página, cualquier otra tecla para salir\n" );
printf( "(Pulsa cualquier tecla para entrar en modo gráfico)\n" );
getch();
initgraph( &driver, &modo, "C:\\TC20\\BIN" );
setactivepage( 0 );
setfillstyle( SOLID_FILL, 6 );
sector( 300, 150, 45, 315, 150, 50 );
setactivepage( 1 );
setfillstyle( SOLID_FILL, 6 );
sector( 300, 150, 90, 270, 150, 50 );
while( getch() == ' ' ) {
setvisualpage( visual );
visual = 0==visual ? 1 : 0;
}
closegraph();
getch();
}

Función setwritemode

void far setwritemode(int modo);

Esta función es usada para establecer el modo lógico de escritura para líneas rectas. El argumento modo especifica el modo de escritura, el cual determina la interacción entre valores de píxeles existentes y los valores de píxeles en la línea. Existen dos valores para los modos de escritura.

La función setwritemode no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
initgraph( &driver, &modo, "C:\\TC20\\BIN" );
setfillstyle( SOLID_FILL, 1 );
bar( 50, 50, 500, 300 );
setwritemode( COPY_PUT );
setcolor( 10 );
line( 20, 60, 220, 100 );
setwritemode( XOR_PUT );
line( 20, 80, 220, 120 );
getch();
closegraph();
getch();
}

Función textheight

int far textheight(char far *texto);

Esta función es usada para determinar la altura, en píxeles, de la cadena de texto especificada por el argumento *texto. La altura del texto se determina usando la fuente actual y el tamaño del carácter.

La función textheight retorna la altura, en píxeles, del texto especificado por el argumento.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
int anchura, altura;
char mensaje[5] = "Hola";

initgraph( &driver, &modo, "C:\\TC20\\BIN" );
outtextxy(10,10,mensaje);
anchura = textwidth( mensaje );
altura = textheight( mensaje );
getch();
closegraph();
printf( "El mensaje: \"%s\" tiene de anchura: %d y altura: %d\n", mensaje,
anchura, altura );
printf( "Pulsa una tecla para continuar...\n" );
getch();
}

Función textwidth

int far textwidth(char far *texto);

Esta función es usada para determinar la anchura, en píxeles, de la cadena de texto especificada por el argumento *texto. La anchura del texto se determina usando la fuente actual y el tamaño del carácter.

La función textwidth retorna la anchura, en píxeles, del texto especificado por el argumento.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
int anchura, altura;
char mensaje[5] = "Hola";

initgraph( &driver, &modo, "C:\\TC20\\BIN" );
outtextxy(10,10,mensaje);
anchura = textwidth( mensaje );
altura = textheight( mensaje );
getch();
closegraph();
printf( "El mensaje: \"%s\" tiene de anchura: %d y altura: %d\n", mensaje,
anchura, altura );
printf( "Pulsa una tecla para continuar...\n" );
getch();
}

Tema 6


Continuación tema 5

 Función pieslice

void far pieslice(int x, int y,int comienzo_angulo, int final_angulo, int radio);

Esta función es usada para dibujar y rellenar un una cuña circular. La cuña circular está centrada en el punto especificado por los argumentos x e y. La porción circular de la cuña comienza con el ángulo especificado por el argumento comienzo_angulo y se extiende en un sentido contrario a las agujas del reloj al ángulo especificado por el argumento final_angulo. La función pieslice considera este – el eje horizontal a la derecha del centro – como su punto de referencia de 0 grados. El perímetro de la cuña es dibujado con el  color actual y es rellenado con la trama y color de relleno actual.

La función pieslice no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
pieslice( 300, 150, 45, 225, 50 );
getch(); /* Pausa */
closegraph();
getch();
}

Función registerbgidriver

int registerbgidriver(void (*driver)(void));

Esta función es usada para cargar y registrar un dispositivo gráfico. El argumento *driver apunta a un dispositivo. Un fichero de dispositivo registrado puede ser tanto cargado desde el disco o convertido en un formato .OBJ y ligado (o enlazado) dentro del programa. Registrando el dispositivo de esta manera, el fichero .EXE no depende de un fichero externo de dispositivo para poder ejecutarse.

La función registerbgidriver retorna número del dispositivo cuando tiene éxito. Un código de error, un número negativo, es retornado si el dispositivo especificado es inválido.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
registerbgidriver(IBM8514LO);
initgraph( &driver, &modo, "C:\\TC20\\BIN" );
rectangle( 20, 20, 400, 300 );
getch(); /* Pausa */
closegraph();
getch();
}





Función registerbgifont

int registerbgifont(void (*fuente)(void));

Esta función es usada para informar al sistema que la fuente apuntada por el argumento *fuente fue incluida durante el enlazo. Un fichero de fuente registrado ha de ser convertido en un fichero objeto .OBJ y ligado (o enlazado) dentro del programa. Registrando la fuente de esta manera, el fichero .EXE no depende de un fichero externo de fuentes para poder ejecutarse.

Nota: La fuente de defecto es la única que está disponible en el programa, ya que forma parte del sistema gráfico; no es necesario ligarlo al programa.

La función registerbgifont retorna número del dispositivo cuando tiene éxito. Un código de error, un número negativo, es retornado si el dispositivo especificado es inválido.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
registerbgifont(1);
initgraph( &driver, &modo,"C:\\TC20\\BIN" );
outtext( "Esto es una prueba con la fuente \"Sans Serif\"" );
getch(); /* Pausa */
closegraph();
getch();
}

Función restorecrtmode

void far restorecrtmode(void);

Esta función es usada para reiniciar el modo gráfico del vídeo al modo en uso anterior a la inicialización del sistema gráfico. Esta función suele ser usada en conjunción con la función setgraphmode para cambiar entre ambos modos de texto y de gráficos.

La función restorecrtmode no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
outtext( "Esto es una prueba para cambiar entre modo gráfico..." );
getch();
restorecrtmode();
printf( "...y en modo texto.\nPulsa una tecla para volver\n" );
getch();
setgraphmode( modo );
rectangle( 200, 100, 400, 250 );
getch(); /* Pausa */
closegraph();
getch();
}

Función sector

void far sector(int x, int y, int comienzo_angulo, int final_angulo, int x_radio, int y_radio);

Esta función es usada para dibujar y rellenar la parte de una elipse. El centro de la cuña elíptica es especificado por los argumentos x e y. El argumento x_radio especifica el radio horizontal y el argumento y_radio especifica el radio vertical de la cuña elíptica. La cuña elíptica comienza al ángulo especificado por el argumento comienzo_angulo y es dibujado en la dirección contraria al de las agujas del reloj hasta llegar al ángulo especificado por el argumento final_angulo. La cuña elíptica es dibujado con el perímetro en el color actual y rellenada con el color de relleno y la trama de relleno actuales.

La función sector no retorna ningún valor.

Ejemplo:
#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
setfillstyle( SOLID_FILL, 6 );
sector( 300, 150, 45, -45, 150, 50 );
getch(); /* Pausa */
closegraph();
getch();
}

Función setactivepage

void far setactivepage(int pagina);

Esta función es usada para especificar un número de página que representa una sección de memoria del vídeo donde todos los datos gráficos para mostrar son enviados. Está sección de memoria se denomina una página activa. El argumento pagina específica el número de la página activa. Para usar esta función con eficacia, el adaptador de vídeo usado debe ser EGA o VGA y tener suficiente memoria para soportar múltiples páginas
para gráficos. Esta función es usada con la función setvisualpage para dibujar páginas no visuales y para crear animación.

La función setactivepage no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
int visual=1;
printf( "Instrucciones:\nPulsa el espacio para cambiar de "
"página, cualquier otra tecla para salir\n" );
printf( "(Pulsa cualquier tecla para entrar en modo gráfico)\n" );
getch();
initgraph( &driver, &modo, "C:\\TC20\\BIN" );
setactivepage( 0 );
setfillstyle( SOLID_FILL, 6 );
sector( 300, 150, 45, 315, 150, 50 );
setactivepage( 1 );
setfillstyle( SOLID_FILL, 6 );
sector( 300, 150, 90, 270, 150, 50 );
while( getch() == ' ' ) {
setvisualpage( visual );
visual = 0==visual ? 1 : 0;
}
closegraph();
getch();
}

Función setallpalette

void far setallpalette(struct palettetype far *paleta);

Esta función es usada para asignar la paleta actual a la paleta definida en la estructura del tipo palettetype que es apuntado por el argumento *paleta. Todos los colores de la paleta actual son asignados a aquéllos definidos en la estructura palettetype. La síntaxis de la estructura palettetype es:

#define MAXCOLORS 15
struct palettetype {
unsigned char size;
signed char colors[MAXCOLORS+1];
}

El campo size indica el número de colores de la paleta actual. El campo colors es un array que contiene los valores numéricos que representan los colores que ofrece el dispositivo en su paleta de colores. Si la entrada de cualquier elemento del array es -1, el valor del color de ese elemento no cambiará.

Nota: Recuerda que todos los cambios hechos a la paleta tiene un efecto visual inmediato y que la función setallpalette no debería usarse con el dispositivo IBM-8514.

La función setallpalette no retorna ningún valor; sin embargo, si los valores pasados son inválidos, entonces la función graphresult retorna grError (-11) y la paleta no es alterada.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
struct palettetype palette;
int size, temp, i, y=0;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
getpalette( &palette );
size = palette.size;
for( i=0; i<size; i++ ) {
y += 30;
setcolor( palette.colors[i] );
line( 20, y, 520, y );
}
getch(); /* Pausa */
for( i=0; i<size/2; i++ ) {
temp = palette.colors[i];
palette.colors[i] = palette.colors[size-1-i];
palette.colors[size-1-i] = temp;
}
setallpalette( &palette );
getch(); /* Pausa */
closegraph();
getch();
}

Función setaspectratio

void far setaspectratio(int x_proporcion, int y_proporcion);

Esta función es usada para modificar la proporción anchura-altura del modo gráfico actual. La proporción anchura-altura puede definirse como la proporción de la anchura del píxel del modo gráfico y la altura del píxel. Esta proporción es usada por el sistema gráfico para calcular círculos y arcos. Por ello, alterando la proporción anchura-altura afectará la visualización de estas Funciones. La función getaspectratio puede ser usada para obtener las opciones por defecto del modo actual anteriormente a ser modificados.

La función setaspectratio no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA, modo = EGAHI,x_proporcion, y_proporcion;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
getaspectratio( &x_proporcion, &y_proporcion );
circle( 300, 150, 50 );
getch(); /* Pausa */
setaspectratio( 2*x_proporcion, y_proporcion );
circle( 300, 150, 50 );
getch(); /* Pausa */
closegraph();
getch();
}

Función setgraphbufsize

unsigned far setgraphbufsize(unsigned bufer_tam);

Esta función es usada para cambiar el tamaño del búfer gráfico interno como es asignado por la función initgraph cuando el sistema gráfico es inicializado. El búfer gráfico es usado por varias Funciones gráficos; por ello, se debería tener un mayor cuidado cuando se altera este búfer del tamaño por defecto de 4096. La función setgraphbufsize se debería llamar antes de llamar a la función initgraph.

La función setgraphbufsize retorna el tamaño anterior del búfer gráfico interno.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
int buf_inicial, buf_nuevo=10000;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
buf_inicial = setgraphbufsize( buf_nuevo );
closegraph();
printf( "Búfer inicial: %d\tBúfer nuevo: %d\n", buf_inicial, buf_nuevo );
getch();
}
Función setgraphmode

void far setgraphmode(int modo);
Esta función es usada para seleccionar el modo gráfico actual pero solamente cuando el sistema gráfico haya sido inicializado con la función initgraph. El argumento modo define el modo a usar según el dispositivo actual. Además de seleccionar un nuevo modo, la función setgraphmode despeja la pantalla y reinicia todas las opciones gráficas a sus
valores por defecto. Esta función suele usarse conjuntamente con restorecrtmode para cambiar entre modos gráficos y de texto.

La función setgraphmode no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA, modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
outtext( "Esto es una prueba para cambiar entre modo gráfico..." );
getch();
restorecrtmode();
printf( "...y en modo texto.\nPulsa una tecla para volver\n" );
getch();
setgraphmode( modo );
rectangle( 200, 100, 400, 250 );
getch(); /* Pausa */
closegraph();
getch();
}

Función setlinestyle

void far setlinestyle(int estilo,unsigned trama, int grosor);

Esta función es usada para definir las características de líneas para líneas rectas.
El argumento estilo específica la trama de línea predefinida para su uso. El argumento trama es una trama de 16 bits que describe el estilo de línea cuando el argumento estilo es USERBIT_LINE, ó 4. Un bit 1 en esta trama indica que el píxel correspondiente será asignado el color actual. Un bit 0 indica que el píxel correspondiente no será alterado. El
argumento grosor define el grosor de la línea. Existen varios valores para los diferentes estilos y grosores de líneas rectas.

La función setlinestyle no retorna ningún valor; sin embargo, si un argumento es inválido, entonces la función graphresult retorna grError (11).

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA,modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
setlinestyle( DOTTED_LINE, 0, THICK_WIDTH );
line( 200, 300, 400, 50 );
getch(); /* Pausa */
closegraph();
getch();
}

Función setpalette

void far setpalette(int num_paleta, int color);

Esta función es usada para modificar una sola entrada en la paleta actual. El argumento num_paleta especifica el miembro de la paleta a cambiar. El argumento color especifica el nuevo valor de color para el miembro de la paleta. Existen varios valores para los colores dependiendo del dispositivo.
Nota: Recuerda que todos los cambios hechos a la paleta tiene un efecto visual inmediato y que la función setpalette no debería usarse con el dispositivo IBM-8514.

La función setpalette no retorna ningún valor; sin embargo, si los valores pasados son inválidos, entonces la función graphresult retorna grError (-11) y la paleta no es alterada.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
struct palettetype palette;
int size, temp, i, y=0;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
getpalette( &palette );
size = palette.size;
for( i=0; i<size; i++ ) {
y += 30;
setcolor( palette.colors[i] );
line( 20, y, 520, y );
}
getch(); /* Pausa */
for( i=0; i<size/2; i++ ) {
temp = palette.colors[i];
setpalette( i, palette.colors[size-1-i] );
setpalette( size-1-i, temp );
}
getch(); /* Pausa */
closegraph();
getch();
}

Función setrgbpalette

void far setrgbpalette(int num_paleta,int rojo, int verde, int azul);

Esta función es para usarse con los dispositivos de IBM 8514 y VGA. El argumento num_paleta especifica el miembro de la paleta a ser modificado. Para la IBM 8514 (y para el modo de 256K de la VGA), el intervalo de la paleta es de 0 á 255. Para los modos de VGA, el intervalo es de 0 á 15. Los argumentos rojo, verde, y azul especifican la intensidad del color para el miembro de la paleta. De cada byte (de cada argumento) sólo los seis bits más significativos son cargados en la paleta. Por razones de compatibilidad con otros adaptadores gráficos de IBM, el dispositivo BGI define las primeras dieciséis entradas a la paleta de la IBM 8514 a los colores por defecto de la EGA/VGA.

Nota: Recuerda que todos los cambios hechos a la paleta tiene un efecto visual inmediato y que la función setrgbpalette no debería usarse con el dispositivo IBM-8514.

La función setrgbpalette no retorna ningún valor.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
struct palettetype palette;
int size, i, y=0;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
getpalette( &palette );
size = palette.size;
for( i=0; i<size; i++ ) {
y += 30;
setcolor( palette.colors[i] );
line( 20, y, 520, y );
}
getch(); /* Pausa */
for( i=0; i<size; i++ )
setrgbpalette( i, 2*i+33, 42, 63-4*i ); /* Tonos de naranja y azul */
getch(); /* Pausa */
closegraph();
getch();
}

Función settextjustify

void far settextjustify(int horizontal, int vertical);

Esta función es usada para especificar el método en el cual el texto es colocado en la pantalla con relación a la posición del cursor. El argumento horizontal define la justificación horizontal, mientras que el argumento vertical indica la justificación vertical.
Existen varios valores y constantes para las justificaciones.

La función settextjustify no retorna ningún valor; sin embargo, si los valores pasados son inválidos, entonces la función graphresult retorna grError (-11) y la paleta no es alterada.

Ejemplo:

#include <graphics.h>
#include <conio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
settextjustify( RIGHT_TEXT, BOTTOM_TEXT );
moveto(300, 200);
outtext( "(RIGHT_TEXT, BOTTOM_TEXT)" );
settextjustify( RIGHT_TEXT, TOP_TEXT );
moveto(300, 200);
outtext( "(RIGHT_TEXT, TOP_TEXT)" );
settextjustify( LEFT_TEXT, BOTTOM_TEXT );
moveto(300, 200);
outtext( "(LEFT_TEXT, BOTTOM_TEXT)" );
settextjustify( LEFT_TEXT, TOP_TEXT );
moveto(300, 200);
outtext( "(LEFT_TEXT, TOP_TEXT)" );
setcolor( 1 );
line( 300, 200, 300, 100 );
setcolor( 2 );
line( 300, 200, 300, 300 );
setcolor( 3 );
line( 300, 200, 100, 200 );
setcolor( 4 );
line( 300, 200, 500, 200 );
getch();
closegraph();
getch();
}

Función settextstyle

void far settextstyle(int fuente,int orientacion, int tam_caracter);

Esta función es usada para especificar las características para la salida de texto con fuente. El argumento fuente especifica la fuente registrada a usar. La fuente ha de estar registrada para resultados predecibles; es decir, usa registerbgifont antes de usar esta función. El argumento orientacion especifica la orientación en que el texto ha de ser mostrado. La orientación por defecto es HORIZ_DIR. El argumento tam_caracter define  l
factor por el cual la fuente actual será multiplicada. Un valor distinto a 0 para el argumento tam_caracter puede ser usado con fuentes escalables o de bitmap. Sin embargo, un valor distinto a 0 para el argumento tam_caracter, el cual selecciona el tamaño del carácter definido por el usuario usando la función setusercharsize, solamente Funciona con fuentes escalables. El argumento tam_caracter puede agrandar el tamaño de la fuente hasta 10 veces su tamaño normal. Existen varios valores y constantes para las justificaciones.

La función settextstyle no retorna ningún valor.





Ejemplo:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
void main() {
int driver = EGA;
int modo = EGAHI;
char mensaje[40];
char nombre[25];
printf( "Escribe tu nombre: " );
scanf( "%s", nombre );
sprintf( mensaje, "Hola %s!", nombre );
/* Esta fuente ha de ser enlazada antes de poder registrarla
registerbgifont( sansserif_font );
*/
initgraph( &driver, &modo, “C:\\TC20\\BIN” );
settextstyle( DEFAULT_FONT, 0, 2 );
outtextxy( 100, 50, mensaje );
settextstyle( DEFAULT_FONT, 1, 2 );
outtextxy( 200, 125, mensaje );
settextstyle( SANS_SERIF_FONT, 1, 3 );
outtextxy( 400, 150, mensaje );
getch();
closegraph();
getch();
}