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();
}