Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
2Activity
0 of .
Results for:
No results containing your search query
P. 1
64683050050748685155675166704550-ProgGraf

64683050050748685155675166704550-ProgGraf

Ratings: (0)|Views: 14 |Likes:
Published by api-3766487

More info:

Published by: api-3766487 on Oct 16, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/09/2014

pdf

text

original

INFORM\u00c1TICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
1
PROGRAMACI\u00d3N DE GR\u00c1FICOS EN LENGUAJE C

Para producir la imagen de video, la mayor\u00eda de los miembros de la familia PC requiere un adaptador de video. Los adaptadores de video fueron dise\u00f1ados para el PCjr, pero inmediatamente se generaliz\u00f3 su uso al resto de las PC\u2019s, a tal punto que se llega a un nivel como el de VGA (Video Graphics Array) quien claramente ha demostrado ser el adaptador de video m\u00e1s popular de los \u00faltimos tiempos.

Las aplicaciones de software han evolucionado gigantescamente. Si nos remontamos una o dos d\u00e9cadas en el tiempo veremos que el entorno en el que giraban los programas era muy limitado y, de poseer capacidades gr\u00e1ficas, estas eran apenas unos garabatos cuadriculados (monocromo, por supuesto). Hoy en d\u00eda no nos imaginamos una aplicaci\u00f3n de software sin su adecuado entorno gr\u00e1fico (La prueba m\u00e1s concisa: El dominio en el mercado de los \u201cSoftware for Windows\u201d). Es por este motivo que todo programador debe tener al menos una noci\u00f3n de programaci\u00f3n gr\u00e1fica.

Adaptadores de Video y Controladores de Gr\u00e1ficos:

El adaptador de video conecta el ordenador al monitor a trav\u00e9s de unchip llamado controlador de CRT. El adaptador tambi\u00e9n tiene un conjunto de puertos de E/S programables, una ROM generadora de caracteres y memoria RAM para almacenar informaci\u00f3n del visualizador.

Los generadores de video operan fundamentalmente seg\u00fan dos modos diferentes, llamados por IBM, modo texto y modo gr\u00e1fico. El modo texto solo permite visualizar caracteres (El c\u00f3digo ASCII completo), aunque hay quienes programan en este modo de una forma pseudogr\u00e1fica. El modo gr\u00e1fico se utiliza principalmente para producir dibujos complejos, pero puede reproducir caracteres de texto con gran variedad de formas y tama\u00f1os.

Ninguna funci\u00f3n gr\u00e1fica de \u201cC\u201d puede funcionar sin un controlador de gr\u00e1ficos en memoria. Los controladores de gr\u00e1ficos est\u00e1n contenidos en los archivos .BGI (Borland Graphics Interface), los cuales deben estar disponibles en el sistema. Los diversos drivers que Borland provee para esta versi\u00f3n de Turbo C se listan a continuaci\u00f3n:

1. CGA
2. MCGA
3. EGA
4. EGA64 (EGA de 64K)
5. EGAMONO (EGA Monocrom\u00e1tica)
6. IBM8514
7. HERCMONO (Hercules)
8. ATT400 (Adaptador de AT&T 6300 PC)
9. VGA
10.PC3270 (IBM 3270)

Es importante destacar que todas las declaraciones de funciones gr\u00e1ficas, el Turbo C las realiza en un archivo llamado graphics.h que ser\u00e1 necesario incluir en el programa, de la siguiente manera:

INFORM\u00c1TICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
2
#include <graphics.h>
Inicializaci\u00f3n del sistema de gr\u00e1ficos:
Antes de que se pueda usar cualquiera de las funciones gr\u00e1ficas es preciso
colocar el adaptador de video en uno de las modos gr\u00e1ficos usando la funci\u00f3n
initgraph(), que tiene la siguiente sintaxis:
void far initgraph (int far *controlador, int far *modo, const char far *camino);

La funci\u00f3ninit graph( ) carga en memoria un controlador de gr\u00e1ficos que corresponda al n\u00famero indicado porcontrolador. Este n\u00famero est\u00e1 estrechamente ligado con los 10 enumerados en el tema anterior, pudiendo ser 0 para la opci\u00f3n de autodetecci\u00f3n (cuya macro es: DETECT ). El par\u00e1metromodo indica un n\u00famero entero que especifica el modo de video usado por las funciones gr\u00e1ficas. Por \u00faltimo se deber\u00e1 especificar uncami no al controlador si este es distinto al directorio de trabajo.

Los distintos modos, de acuerdo a cada controlador, son los que se muestran
en la siguiente tabla:
Controlador
Modo
Valor
Resoluci\u00f3n
CGA
CGAC0
0
320 x 200
CGAC1
1
320 x 200
CGAC2
2
320 x 200
CGAC3
3
320 x 200
CGAHI
4
640 x 200
MCGA
MCGAC0
0
320 x 200
MCGAC1
1
320 x 200
MCGAC2
2
320 x 200
MCGAC3
3
320 x 200
MCGAMED
4
640 x 200
MCGAHI
5
640 x 480
EGA
EGALO
0
640 x 200
EGAHI
1
640 x 350
EGA64
EGA64LO
0
640 x 200
EGA64HI
1
640 x 350
EGAMONO
EGAMONOHI
3
640 x 350
HERC
HERCMONOHI
0
720 x 348
ATT400
ATT400C0
0
320 x 200
ATT400C1
1
320 x 200
ATT400C2
2
320 x 200
ATT400C3
3
320 x 200
ATT400CMED
4
640 x 200
ATT400CHI
5
640 x 200
VGA
VGALO
0
640 x 200
VGAMED
1
640 x 350
VGAHI
2
640 x 480
INFORM\u00c1TICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
3
PC3270
PC3270HI
0
720 x 350
IBM8514
IBM8514LO
0
640 x 480
IBM8514HI
1
1024 x 768
Para dejar de usar un modo de video gr\u00e1fico y volver a modo texto, se usa o
bienclosegrap h ( ) orest orecrt mod e( ). Sus prototipos son:
void far closegraph (void);
void far restorecrtmode (void);

La diferencia entre ambas estriba principalmente en que la primera descarga toda la memoria asignada a especificaciones gr\u00e1ficas, mientras que la segunda la deja intacta para permitir el regreso al modo indicado cuando se encuentre la siguiente funci\u00f3n:

void far setgraphmode (intmo d o);
Ejemplo: Veamos el siguiente programa que alterna de modo gr\u00e1fico a texto y
viceversa para mostrar el uso de estas funciones.
\u00a2
\u00a1
\u00a3
\u00a5
\u00a4
\u00a7
\u00a6
\u00a8
\u00a5
\u00a9
\ue001
\ue000
\ue003
\ue002
\u00a5
\ue004
\ue006
\ue005
\ue008
\ue007
\ue006
\ue009
!
\ue00a
\u00a5
\u00a1
\u00a4
#
"
%
$
\ue00a
\u00a2
&
\u00a2
\u00a1
\u00a3
\u00a5
\u00a4
\u00a7
\u00a6
\u00a8
\u00a5
\u00a9
\ue001
\ue000
\ue003
\ue002
%
"
(
'
)
\u00a9
\ue001
\u00a1
0
1
$2
\ue00a
\u00a5
&
\u00a2
\u00a1
\u00a3
\u00a5
\u00a4
\u00a7
\u00a6
\u00a8
\u00a5
\u00a9
\ue001
\ue000
\ue003
\ue002
\u00a5
\u00a4
\u00a7
0
\u00a7
\u00a3
\u00a2
\u00a1
0
1
$
\ue00a
\u00a2
&
3
0
\u00a7
\u00a1
\u00a9
5
4
7
6
%
8
@
9
A
0
\u00a7
\u00a9
\ue001
\ue000
\u00a7
B
C
\ue000
\u00a7
D
E
0
\u00a7
F
3
0
\u00a7
\u00a1
\u00a9
\ue001
G
H
"
I
'
)
\ue005
P
\u00a8
\u00a5
\u00a4
#
'
3
\u00a1
\ue000
#
Q
R
\ue009
!
0
\u00a7
\ue005
S
'
T
'
T
U
\u00a2
\ue009
\ue006
\ue000
3
\ue009
!
V
\u00a1
\u00a3
W
'
\ue001
9
A
0
\u00a7
\u00a9
\ue001
0
\u00a7
V
\ue004
!
\ue000
#
'
3
\u00a1
\ue000
#
Q
X
"
Y
\ue000
#
'
T
'
)
\u00a1
\u00a3
\u00a5
\ue004
\u00a5
"
`
F
\u00a7
a
3
\ue009
b
G
c
V
9
A
0
\u00a7
\u00a9
d
0
E
e
f
\ue004
!
\ue000
#
'
g
\ue004
!
\ue005
P
\ue007
!
\ue009
\ue006
\ue00a
\u00a5
D
\ue003
0
\u00a7
\u00a9
\ue001
\ue000
\u00a7
F
c
G
h
V
"
`
\ue000
#
'
T
'
g
\ue000
#
i
p
'
T
q
r
\u00a8
%
"
I
'
)
\u00a1
s
P
U
\u00a2
F
\u00a7
4
u
t
W
v
!
8
@
t
W
6
%
w
x
8
@
t
Y
y
\u00a2
8
@
\u0080
\u0081
4
7
t
W
v
\u0082
8
@
t
W
6
W
w
x
8
@
t
Y
y
\u00a5
8
\u0083
G
c
V
0
\u00a7
\u00a8
%
'
T
'
g
\ue000
#
i
p
'
T
i
p
U
\u00a2
F
\u00a7
F
3
\ue009
\u0084
$
\ue005
P
\u00a1
\ue004
\ue006
\ue00a
%
'
)
\u0085
3
\ue009
\u0086
$
\u00a6
\ue000
#
s
\ue008
'
g
G
h
\u0087
\u0089
\u0088
W
\u0080
\u0090
F
3
\ue009
\u0084
$
\u0091
\ue006
0
#
'
T
'
)
0
\u00a7
D
E
\u0085
3
\ue009
\u0084
$
'
g
0
\u00a7
\ue009
!
G
c
\u0087
\u0089
\u0088
W
\u0080
\u0081
\u0092
P
t
Y
"
I
'
)
0
E
\ue000
#
"
\u0084
9
A
0
\u00a7
\u00a9
\ue001
0
\u0093
\ue005
\ue008
\u0094
\u00a5
s
c
\u00a1
\u00a4
\u00a7
0
1
$
\u0095
$
\u0095
$
\u0092
\u0096
G
c
V
0
\u00a7
\u00a8
%
'
T
'
g
\ue000
#
i
p
'
T
i
p
U
\u00a2
F
\u00a7
F
3
\ue009
\u0084
$
\ue005
P
\u00a1
\ue004
\ue006
\ue00a
%
'
)
\u0085
3
\ue009
\u0086
$
\u00a6
\ue000
#
s
\ue008
'
g
G
h
\u0087
\u0089
\u0088
W
\u0080
3
\ue009
\u0084
$
\u0091
\ue006
0
#
'
T
'
g
0
\u00a7
D
\ue003
\u0085
\u0097
'
)
\ue000
#
i
p
'
)
\ue00a
\u00a2
\ue000
\u00a7
\u00a1
\ue004
\ue006
\ue00a
%
'
)
F
c
\u0092
P
\u0098
!
\u0092
P
G
h
\u0080
\u0092
\ue008
\u0099
\u0096
\ue005
P
\ue000
#
"
`
\u00a1
0
\u00a7
\u00a3
\u00a2
\ue000
\u00a8
\u00a5
\u00a3
\u00a5
\ue007
f
'
)
\ue000
\u00a7
\u00a4
\u00a7
\u00a6
\ue007
b
\ue009
\ue006
\ue007
!
\ue005
P
\ue007
b
9
A
0
\u00a7
\u00a9
\ue001
0
\ue00b
8
@
\ue000
#
i
p
'
)
0
1
$\u0095
$\ue00c
$
\u0092
\u0096
G
h
V
\ue004
!
\ue000
#
'
g
\u00a4
\u00a7
\ue00a
\u00a5
F
c
G
h
V
\ue005
\ue008
\ue000
#
"
(
'
)
0
\u00a7
\ue005
P
\ue000
\u00a7
\u00a4
\u00a7
\ue005
\ue00d
'
g
D
\ue003
0
\u00a7
\u00a9
\ue001
\ue000
\u00a7
F
h
G
c
V
\ue009
!
\ue005
P
\u00a1
\u00a3
W
'
T
s
\ue00e
F
\u00a7
\u0092
\ue00d
\ue00f
\ue010
\ue00a
\u00a5
0
\u00a7
\ue005
P
\ue007
b
\ue000
#
"
I
'
g
\ue007
!
D
\ue003
0
#
"
\u0086
\ue000
\u00a7
\u00a3
f
9
A
0
\u00a7
\u00a9
\ue001
0
\ue00b
8
@
\ue000
#
i
p
'
)
0
1
$
j
\u00a2
\u00a3
\u00a5
j
\u00a5
\u00a3
\u00a5
\u0092
\u0096
G
c
V
\ue009
!
\ue005
P
\u00a1
\u00a3
W
'
T
s
\ue00e
F
\u00a7
\u0092
\ue008
\u0099
\u0096
\ue005
P
\ue000
#
"
`
\u00a1
0
\u00a7
\u00a3
\u00a2
\ue000
\ue003
\u00a8
\u00a5
\u00a3
\u00a5
\ue007
f
'
)
\ue000
\u00a7
\u00a4
\u00a7
\u00a6
\ue007
b
\ue009
\ue006
\ue007
!
\ue005
P
\ue007
3
0
\u00a7
\u00a6
3
\ue000
\u00a7
\ue005
\u0096
\ue007
b
9
A
0
\u00a7
\u00a9
\ue001
0
\u0093
\ue005
P
\u0094
k
s
\ue00e
\u00a1
\u00a4
\u00a7
0
1
$
\ue00c
$
\u0095
$
\u0092
\u0096
G
c
V
\ue004
!
\ue000
#
'
g
\u00a4
\u00a7
\ue00a
\u00a5
F
c
G
h
V
"
`
\ue000
#
'
)
\ue004
\ue006
\ue005
\ue008
\ue007
\ue006
\ue009
!
\ue00a
\u00a5
D
E
0
\u00a7
\u00a9
d
\ue000
\u00a7
F
\u00a7
9
A
0
\u00a7
\u00a9
\ue001
0
\ue003
G
c
V
"
`
\ue000
#
'
T
'
g
\ue000
#
i
p
'
T
q
r
\u00a8
%
"
I
'
)
\u00a1
s
P
U
\u00a2
F
\u00a7
4
u
t
W
v
!
8
@
t
W
6
%
w
x
8
@
t
Y
y
\u00a2
8
@
\u0080
\u0081
4
7
t
W
v
\u0082
8
@
t
W
6
W
w
x
8
@
t
Y
y
\u00a5
8
\u0083
G
c
V
0
\u00a7
\u00a8
%
'
T
'
g
\ue000
#
i
p
'
T
i
p
U
\u00a2
F
\u00a7
F
3
\ue009
\u0084
$
\ue005
P
\u00a1
\ue004
\ue006
\ue00a
%
'
)
\u0085
3
\ue009
\u0086
$
\u00a6
\ue000
#
s
\ue008
'
g
G
h
\u0087
\u0089
\u0088
W
\u0080
\u0090
F
3
\ue009
\u0084
$
\u0091
\ue006
0
#
'
T
'
)
0
\u00a7
D
E
\u0085
3
\ue009
\u0084
$
'
g
0
\u00a7
\ue009
!
G
c
\u0087
\u0089
\u0088
W
\u0080
\u0081
\u0092
S
l
m
\u00a8
\u00a5
\ue000
\u00a7
\u00a6
'
g
\ue007
b
\ue000
\u00a7
\u00a3
n
9
A
0
\u00a7
\u00a9
d
0
\u0093
\ue005
\ue008
\u0094
\u00a5
s
c
\u00a1
\u00a4
\u00a7
0
1
$
\u0095
$
\u0095
$
\u0092
\u0096
G
c
V

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->