Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Grafica en C PDF
Programacion Grafica en C PDF
1. CGA
2. MCGA
3. EGA
4. EGA64 (EGA de 64K)
5. EGAMONO (EGA Monocromtica)
6. IBM8514
7. HERCMONO (Hercules)
8. ATT400 (Adaptador de AT&T 6300 PC)
9. VGA
10.PC3270 (IBM 3270)
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
1
#include <graphics.h>
void far initgraph (int far *controlador, int far *modo, const char far *camino);
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
2
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 grfico y volver a modo texto, se usa o
bien closegraph() o restorecrtmode(). Sus prototipos son:
! #"%$&(')
*+
,-. ! /
0
12 !
345667
! 8
9') 8
!
3:;
6 <.= ! >/?8
') @-AB
C2,
.?/D8
<
6C
EF6GH1 I27."KJ9L&(J9$MN&(J;O&(PQ"%J9LR&(J9$9MN&(J;O&S/?8
6C
EF6EF7.. ! T 2 U ! V
IC/DWYX9PZ. ! T [6,-U ! T C/?WYX9PQ\2J;1-
T')
] ^I? __ \`/?8
6C
EF6EF7.. ! T 2 U ! V
IC/DWYX9P ! T [6C,
Ua
EF
.?\2b\2/DP \c`2
<
B
>2>') d&(
EF_e \`/D8
C.?/D8
2
fC,
.D/?8
2 96Ig.\fhi2>
1C,
V
B') d&(
EF jj\`/?8
2 96Ig.\c`2
<
B
>2 ! !
`>') ] 2^kIg e_ \`/?8
C.?/D8
<
,- @
.')
/?8
<
6C
EF6GH1 I27."KJ9L&(J9$MN&(J;O&(PQ"%J9LR&(J9$9MN&(J;O&S/?8
6C
EF6EF7.. ! T 2 U ! V
IC/DWYX9PZ. ! T [6,-U ! T C/?WYX9PQ\5lm
C>
n') @
] ^I? __ \`/?8
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
3
6C
EF6EF7.. ! T 2 U ! V
IC/DWYX9P ! T [6C,
Ua
EF
.?\2b\2/DP
\c`2
<
B
>2o< g__ \`/?8
C.?/D8
p
,
.?/
0
9"%C `AB*TJ;&(J9"+&(8
9') 8
9"% J9228
C2.=q"K92 @2PQ=q') PQ\`\`/?8
"% @ J922An2
; C.?/D8
Ig."% J92RrfAn2sutv/?0
2 6Ig.?\b>2
BJ92gwxS<j\2PQ
22,d<."% @ J922/
/D8
Ey C.zV/?8
p
"%$&(') @
*T
,
.?/?8
;
2.D/?8
p
struct viewporttype {
int left, top, right, bottom;
int clip;
};
Los campos left, top, right y bottom contienen las coordenadas de los
extremos de la ventana. Cuando clip == 0 no existe salida que sobrepase los lmites de
la ventana. Si este es distinto de cero, se realizar corte manual para no sobrepasar los
lmites.
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
4
void far putpixel (int x, int y, int c);
void far line (int x_ini, int y_ini, int x_fin, int y_fin);
void far circle (int x, int y, int r);
[T
2T
@
Ig
J;{Z" |;E}z;[
~')kEy"% 5<P_')E;O@P_')kEFR8
! 4lm
C.D C/D8
,
.?/
0
9"%C `AB*TJ;&(J9"+&(8
9') ] I? 8
C2.=q"K92 @2PQ=q') ] 2kIg PZ\\`/?8
')kEy"% 5TAn
,-kEy 2.?/z;8
')kEFOAn
,-kEFEy.D/?8
')kEF-AB
,
E;7.?/?8
3n
.z;/0
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
5
c`C<.?/D8
"% 2 <.?/?8
p
p
! #c`C<. ! /
0
9}VAz;9998
9 PGHPEyP7PZP34PQ 8
12 !
345667
! 8
lm
.|:/?8
!
3:;
6 <.= ! >/?8
BA ! T [6,U ! V 8
3A ! T 2 ~U ! T
I28
I?2.GHA|98 GHX98 GHB/0
<2 .V/D8
Ig. A|:8Z 9|9|9|8QF/?0
EAzVB2 ,
.3UzV/?8
7nAzVB2 @,-.BUzV/?8
`AB.G/u
Ey
.E9PN7n/w2 @,-.'4Ey"K 5T/?8
I?..GH/u. `AAn ,
.?')kEy"% 5<//wQzq/C E9
.EyP7P
.eGH/u|nwN 2/?8
p
p
c`<.?|9/D8
p
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
6
{N;. PQ,d;>/?8
AB
.?/?8
Ig.J;{Z"AAn
/?0
<
2.?/D8
Ey C.zV/?8
p
Ig.|:AAn
/?0
An
.D/?8
p
p
! 4lm
C. ~;/
0
<
2.'4Ey"K 5TUzV/?8
Ig.r5T/0
<
!
3nfC.|9PQ|9PZ'4EFOWYX9Uz;PQ')kEFRPzq/D8
Q2
.?/D8
<
!
3nfC.z;Pz;PZ'4EFOWYX9UX9PQ')kEFRUz;Pzq/D8
!
3nfC.?/D8
p
;
0
<
!
3nfC.')kEFOWYX9PQ|9PZ')kEFOPQ')E;RPzV/?8
Q2
.?/D8
<
!
3nfC.')kEFOWYX9z;Pz;PQ')kEFOUz;PZ'4EFUz;PzV/?8
!
3nfC.?/D8
p
p
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
7
EF6EF7.')kEFOWDPZ'4EFU.?X9/DPZ,d</?8
<
!
3nfC.')kEFOWYX9z;Pz;PQ')kEFOUz;PZ'4EFU.?9/DPzV/?8
p
<
6C
EF617
.*TJ9h%1&YMZFsuLR&(PZbsu$ FMZ*T $Pzq/D8
p
! #Z
. ! /
0
12 !
345667
! 8
<
2.'4Ey"K 5TUzV/?8
<
167
.{Zsu< *RMZ< L+J9PZ|9PQLTsu$'MN *R&(b/?8
!
3:;
6 <.= ! >/?8
C
.|9PZ|9P ! V 9U ! T
I2P ! T [6,-U ! T C>/?8
p
Que tambin es utilizada para generar lneas, solo que ahora introducimos la
coordenada final en forma absoluta mediante los parmetros x e y.
! #<
&(*T
,
.? [
/?8
! #<
$
*T
,
.? [
/?8
! #c`2,-
2<.? @[
/D8
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
8
! #,
. ! #/
0
9 ] 2*+2 !
An*+J;&(J9"+&(8
9 ] 2') @
8
9}Eyk;P7<8
[
$
8
C2.= ] *T !
2PQ= ] 2'4
PZ\\`/?8
Ck<
2k .=@Eyk<PQ=@7<>/?8
$
BAB.? [
/Eyk;>W.? [
/7<8
&(*T
,
.?$
/D8
C.?/D8
!
.?/D8
$
*+
,-.D$
/?8
C.?/D8
;
2.D/?8
p
! #c`2,-
2<. [
$
F/
0
12 !
345667
! 8
9 PGHPQtNPZ PZP34PEyP7PZtN8
92PQPZk;8
[
2 }<8
!
3:;
6 <.= ! >/?8
BA ! T [6,U ! T 8
3A ! T 2 U ! V
IC8
Ey
Ai3WX98
7
ABnWX98
`AB.?BU9|9/W.D$
;X9/D8
<
AB99|W'h+Oc&Y{Z8
AB|98
I?2. A|:8Q 'hTOc&Y{8QF/0
2 }TAn.D [
/?>'Mc(WSz;9| |98
T_ C EAiEy
n.? C/?.<.? ;/`/D8
T_ C 7nA:7
U.? 9/?.< .? ;/`$
F/?8
>An<8 WY{Z
C
YW
p
I?2.GHAzV8GHA'hTOc&Y{8NGn/0
Ig. A|9P_ A|:8Z 'hTOc&Y{8Z P_ AGy/0
tNA xd'hTOc&Y{Z8
tNA.? UaGH/x'hTOc&Y{Z8
T_ C GHUz; EAnT_tN EUTH.? /?.?tN/w .?tN/? Ey8
T_ C GHUz; 74ABT_tN 7nUT_.? /?`.?tN/w .?tN/? 78
p
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
9
T_'hTOc&Y{ZC GHUz; EAnTH|9C EUVH'h+O@c(&Y{UaGC Ey8
T_'hTOc&Y{ZC GHUz; 7nAnT_|9 7nUTH'hTOc&Y{ZUaGH 78
p
2
.eEyP 7Pe/?8
p
! #<
&(*T
,
. [
2>/
0
9 PGH8
c`2,
C<.2>/?8
I?2. A|:8Q 'hTOc&Y{8QF/0
Ig.GHAF8GH'h+O@c(&Y{d8Q9G9/0
,
!
C.?TH E9PZT_ C 7/?8
.?T GC EyPQT GC 7/?8
p
p
p
! #<
$
*T
,
.? [
/
0
9 PGH8
c`2,
C<.?2/?8
I?2. A|:8Q A'hTOc&Y{8ZF/0
,
!
C.DVH|9C EyPQT_|9 7/?8
Ig.GHA|:8NGA'hTOc&Y{8ZGy/0
.? @V GH_ C EyPQ T GCH 7/?8
p
p
p
El valor de color tiene que estar comprendido en el rango vlido para el modo
de grficos actual. Esto es entre 0 y getmaxcolor().
void far rectangle (int left, int top, int right, int bottom);
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
10
void far arc (int x, int y, int StartAngle, int EndAngle, int Radio);
void far bar (int left, int top, int right, int bottom);
void far bar3d (int left, int top, int right, int bottom, int depth, int topflag);
void far ellipse (int x, int y, int StartAngle, int EndAngle, int RadioX, int
RadioY);
void far sector (int x, int y, int StartAngle, int EndAngle, int RadioX, int RadioY);
Al usar esta funcin para el relleno de figuras cerradas, llmese por las
coordenadas de un punto dentro de la figura y el color de las lneas que constituyen la
figura (su contorno). Est dems aclarar que deber tratarse de una figura cerrada.
Usando setfillstyle() se puede determinar la forma usada para el relleno.
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
11
INTERLEAVE_FILL 9 Relleno con lneas entrecortadas
WIDE_DOT_FILL 10 Relleno punteado con gran espaciado
CLOSE_DOT_FILL 11 Relleno punteado con poco espaciado
USER_FILL 12 Relleno definido por el usuario
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
12
struct textsettingstype {
int font;
int direction;
int charsize;
int horiz;
int vert;
};
Valor Significado
SOLID_LINE Lnea continua
DOTTED_LINE Lnea de puntos
CENTER_LINE Eje de simetra
DASHED_LINE Lnea de trazos
USERBIT_LINE Lnea definida por el usuario
void far getimage (int left, int top, int right, int bottom, void far *buffer);
void far putimage (int left, int top, void far *buffer, int op);
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
13
Se usa putimage() para visualizar una porcin de pantalla contenida en memoria y
apuntada por buffer. Mediante el parmetro op se determina la forma en la que se
escribir en pantalla pudiendo este tomar alguno de los siguientes valores:
unsigned far imagesize (int left, int top, int right, int bottom);
12~c(&Y{d0
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
14
9}EyP78
p68
! # ,
. ! #/
0
1
}bAz;|9|98
1
c&SA:|98
12~c&Y{98
12 !
345667
! 8
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
15
9}EyP7PZ }E9PZ }78
9}<PZ E9PZ 7PQ fEyPQ 57P3nPZPQA9|98
! #Yc` PZY'4
,- 8
!
3:;
6 <.= ! >/?8
EAB. ! T 2 CU ! T
IC/?WYX:Ub8
7nAB. ! T [6C,
U ! T /?WYX:U9bWYX98
3An.D 5EAB EybYX9/U Ey8
BAn.D 57nAB 7b/U 78
c`C AB,
.<A ,
< (
.? EyPZ 7PZ 5EyPQ f7//?8
')
,
AB,
.T/?8
C ,
. EyPQ 7PQ 5E9PZ 57PQc` /?8
,
,
7.'4
,- PZc PN<D< (
I?.< (
MNC//D8
EyA E98N7A 78
3n
-.rftN[ .?//0
9 ,
.E9PN7PQc`9 PQ"%suc`MZc`&
0
}EAB.?2 ,
.b/xX9/uUa34WYwC3nWY8
EAn*+
CO@..eEyA Ey/?P34P ! T
I2P ! T 2 ~/D8
}7nAn.D2 @,-.eb/xdX9/uUWYwNWY8
7 An*+
92..7A 7/?PZP ! V P ! T [6C,/?8
n
pQ3n
.EyAA E=q=7AA 74/D8
C ,-
.EyPN7PEy3nPN7PQc` >/?8
9 ,
.E9PN7PQ')
,
2 PQ"%suc`MZc`&S/?8
,
,
7.')
,
PZc`C P<D< (
Ig.e; (
MNC//?8
7.c&S/?8
p
I?2
.')
,
2 /?8
I?2
.c`C /?8
p
! #Z
. ! #/
0
12 !
345667
! 8
<
2.
,-kEy 2.?/U2 ,
.
,
E9 2.D///?8
<
167
.{Zsu< *RMZ< L+J9PZ|9PQLTsu$'MN *R&(b/?8
!
3:;
6 <.= ! >/?8
C
.|9PZ|9P ! V 9U ! T
I2P ! T [6,-U ! T C>/?8
p
INFORMTICA II - Ayte. Mauricio Varea - Ing. Oscar Nasisi - Ing. Carlos Gil
16