You are on page 1of 14

emeronTI12

RkaPic
GRAPHIC

sBaaNTUeTAn GRAPHIC :
karsMEdgTinnymkelI SCREEN kgTurbo C manrbbBIr KW Text Mode
nwgGraph Mode .
Graph
Mode
minEmnCaxatKMrUrbs;RKb;Pasa
nigma:sIunkMuBUTreT.
eRBaHkarKUsRkahiVcelI Screen, GaRsyedayRbePTkMuBUTrnImYy/ GaRsyedayRbePT
Screen nImYy /////. edIm,IKUsrUb/ pat;BN_rUbPaB////enAelIkMuBUTr/eyIgRtUvbrcrnGKsnIbBaa
Screen BIText ModeeTAGraph Mode.
kuMBUTr/ IBM PC/XT /AT sBVfmaneRcInRbePTxusKadUcxageRkam
- CGA : Color Graphic Adater : crnGKisnIbBaa Screen Color
+ (640 * 200) (manGab;sIus 640 Pixel, manGredaen 200Pixel ) manBIrBN_
+ (320*200) manbYnBN_ .
- MGDA : Monochrome Graphic Display Adapter b Hercule :
I.

243

crnGKisnIbBaa Screens-exA (monochrome)/


+ 720 * 348 (manGab;sIus 720Pixel,manGredaen 348Pixel )
EGA : Enhanced Graphic Adapter : crnGKisnIbBaa Screen Color
+ 640 * 350 nigGaceRCIserIs)an 16BN_ .
VGA : Video Graphic Array : 640 * 480

Super VGA : 1024 * 768 :

II.

bNa

GaceRCIserIs)andl; 256 BN_.

FILE rbs; Graphic :

eBleRbI Graphic CamYy Turbo C enAelI Disk eyIgRtUv Copy bNa File sMxan;
rbs; Graphic dUcxageRkam
*.TPU
*.BGI
*.CHR

nwgenAedImkmviFI eyIgRtUv Proto Type edIm,IeRbI GRAPH.TPU dUcxageRkam


# include<graphics.h>

bNa File *.BGI (BGI : Borland


pkbNaXabBaa Screen epSgKadUcCa
+

Graphic Interface )

KWCabNa

File

CGA.BGI ;
EGAVGA.BGI ;
HERC.BGI ;

bNa File *.CHR CabNa File pkbNaXabBaasMrab;KUsRbePTGkSrkg


dUcCabNa File xageRkamenH
GOTH.CHR (GkSr Gothic)
+

LITT.CHR (Small Font)

GkSr Sons Serif)


TRIP.CHR (GkSrFMCag3dg /Triplex)
edIm,Igayyl;rebobeRbIRkahVic/ eyIgBinit ]TahrN_KUsbnat;BImMuEkgxagelIEpk
xageqVgcuHmk mMuEkg xageRkam EpkxagsaM
SANS.CHR (

244

Graphic

# include<graphics.h>
# include<conio.h>
main()
{ int gd=DETECT, gm ,errorcode ;
initgraph(&gd,&gm,C:\\TC\\BGI);
errorcode =graphresult () ;
if(errorcode != grOk())
{ printf( Graphics error : %s \n ,grapherrormsg(errorcode));
printf( Press any key to halt : ); getch();
exit(1);
}

naM Cursor Graph eTAcMnucmMuEkgxagelI/EpkxageqVg *)


lineto(getmaxx(),getmaxy() ) ; (* KUsbnat; *)
moveto(0,0) ;

(*

getch();
closegraph();
}

manTMrg;

dUcxageRkam

Statement initgraph
Declaration
initgraph( &graphdriver , &graphmode , driverpath ) ;

KWCa Statement begIt (Greate Graphics) RkahVic kgenaH


+ graphdriver pktMlkMNt;RbePT Screen :
0 DETECT 3 EGA
6 IBM8514 9 VGA
1 CGA
4 EGA 64 7 HercMono 10 PC3270
2 MCGA
5 RGAMono 8 ATT 400

pktMlkMNt; Mode RkahVic .


+driverpath R)ab;eGay Turbo C sal; Directory EdlpkbNa File bBaaRkahiVc .
taragxageRkamenHbgajeQaHrbs;bNatMlrbs; GraphDriver,graphMode :
+graphmode

graphdriver
CGA
MCGA
EGA
EGA64

graphmode
CGAc0,1,2,3,4
CGAHi
MCGA0,,1,,2,,3
MCGAMed
MCGAHi
EGALo
EGAHi
EGA64 Lo
EGA64 Li

245

320 * 200 CGA


640 * 200 CGA
320 * 200
320 * 200
640 * 480
640 * 200 CGA
640 * 350
640 * 200 CGA
640 * 350

EGAMono

EGAMono Hi

640 * 350

VGA

VGA Lo
VGA Med
VGA Hi

640 * 200
640 * 350
640 * 480

HercMono

HercMonoHi

720 * 348

ATT400

ATT400 C0,1,2,3
ATT 400 Med
ATT 400 Hi

320 * 200
640 * 400
640 * 400

PC3270

PC 3270 Hi

720 * 350

IBM8514

IBM8514 Lo
IBM8514 Hi

640 * 480 ,, 256COLOR


1024 * 768 ,, 256COLOR

man Variable 2 KW : &gd, &gm .munenHebIsinCa graphdriver


RtUv)ankMnt; edaytMl DETECT enaH initgraph nwgkMnt;yk graphdriver nig
graphmode EdllbMput emIlkgtaragxagelI. lTplnwgpl;eGay &gd, &gm
smmUlnwg graphdiver, graphmode .
kgkrNI Screen man Mode eRcInRbePTxusKa/ eyIgGaceRCIserIs gaphdrver,
smrm
edaymineRbIrebobkMnt;tMleGay
Gd
=
GraphMode
DETECT;EteyIgkMNt;tMlsmrmeGay gd nig gm muneBlehA initgraph .
Statement initgraph

Ex : gd = EGA ; gm = EGAHi ;
initgraph(&Gd,&Gm, C:\\ TC\\BGI ) ;
graphgesult
Function

KWCa Function rbs; Tur bo C ,vaeGayeyIgdwgBIsanPaBrbs; Graphic .

mantMldUc kgtaragxageRkaenH
eQaH
tMl
grOk()

grNoInitGraph()

-1

grNotDetected()

-2

grFileNotFound()

-3

RbePT kMhus

KankMhus
minTan;dMeNIrkar)an
Gt;manEpk HardWareGraph
Gt;rkeXIjbNa File bBaa
OK,

Graph

246

III.

bNaStatement eRbICamYyGraph :
a, moveto(x,y) ;

KwCa

bBanTItaMg CP(Current-Position) eTAcMnucEdlmankUGredaen


X,Y. Cursor kg Screen graph kMNt;edaykUGredaen vaGt;mancMnucPWelatPwbePtdUckg
ScreenText eT .
Statement

(0,0)

(getmaxx(),getmaxy())

GnuKmn_ getx(), gety() pl;nUvkUGredaenn Cursor-Graph.


b,lineto (x,y);

KWCa Statement KUsbnat;Rtg;BITItaMg Cursor-Graph


bcb,neTAcMnucEdlmankUGredaen (X,Y) bnab;BI KUsrYc Cursor-Graph
sitenATItaMgfIEdlmankUGredaen (X,Y)
Function getmaxx(),getmaxy(),eRbIedIm,IKNnacMnYncMnucGtibrmatamGkS Gab;sIusnigGkS
Gredaen . manny fa/ CakUGredaencMnucnmMuEkgxageRkamEpkxagsaM.
Ex cMeBaH EGA Screen, enaH getmaxx = 639, getmaxy = 349 .
edIm,IrkSa Screen-Graph kgkarBinitemIllTpleyIgeRbI Statement getch() .
edIm,IbBab; Graph Mode eyIgeRbI Statement closesgraph() ;
IV. Function

KUscMnuc

KUscMnucmanlkNCamUldan/ eRBaHcMnucbegIt)anCarUbPaBepSgeTt .

Function
putpixel(int x, int y ,int color) ;

KUscMnucPWRtg;TItaMgEdlmankUGredaen (X,Y) manBN_Ca Color .


247

getpixel( int x, int y ) ;

Ca Function bgajR)ab;BN_bcb,nRtg;cMnuc (X,Y) .


V. Function KUsbnat;Rtg;

line(int x1, int y1, int x2, int y2 ) ;

Ca Function KUsbnat;Rtg;BIcMnucEdlmankUGredaen (X1,Y1) eTAcMnuc (X2,Y2).


vaminGaRsyeTAnwg TItaMgn CP ( Current-Position) . eRkayBIKUsrYc
CPnwgsitenARtg;cMnuc (X2,Y2) , eBlenaH LineTo(X,Y) nwg KUsbnat;BITItaMg CP eTAcMnuc
(X,Y) .
linerel( int dx, int dy ) ;

Ca Function KUsGgt;Rtg;BITItaMg CP eTAcMnucfIEdlmankUGredaen (X + dx, Y + dy).


eRkayBIKUsrYc / CP sitenAcMnucfI (X+dx,Y+dy).
VI. Function KUsrgVg;

circle(int x, int y , int R ) ;

Ca Function KUsrgVg;EdlmanpitRtg;cMnun (X,Y), mankaM R .


pieslice( int x, int y , int start, int end ,int R ) ;

Ca Function KUsEpnrgVg; .
ellipse(int x, int y , int start , int end ,int dx , int dy) ;

Ca Function KUs Ellipse .


VII.

sMEdgGtbTelI

SCREEN GRAPH-MODE :

kg graphmode, Statement printf() nwg cprintf() minRsbnwg ScreenGraph


eTeRBaHvaeRbIxatkUGredaen CacMnYn character .
eyIgman Function BIrsMrab;sMEdgGtbTelI ScreenGraph :
-

outtext (char *st) ;

sMEdgGtnyrbs; St Rtg;cMnuc CP (Current Position) enAelI ScreenGraph .


248

outtextxy ( int x, int y , char *st ) ;

sMEdgGtnyrbs; St Rtg;cMnuc (X,Y) enAelI ScreenGraph . dUecH outtextxy


smmUlnwg Command BIxageRkam
-

+ moveto (x,y) ;
+ outtext (*st) ;
settextstyle (font, direction, charsize) ;

kMNt;RbePTGkSrCamYy
RbePT Font GkSr
+

- DefaultFont = 0 ;
-TriplexFont = 1 ;
- SmallFont = 2 ;
- SansSerifFont = 3 ;
- GothicFont = 4;
+Direction :
HorizDir = 0 ;
VertDir = 1 ;
+ CharSize :

TTYltMlBI 1 dl; 10/ CaemKuNedIm,IBRgIktYGkSr .

CharSize
restorecrtmode() ;

Function
setgraphmode() ;

Function
closegraph() ;

enHeRbIsMrab;Rtlb;eTA TextMode beNaHGsn .


enHeRbIsMrab;Rtlb;eTA GrapgMode vij .

Function

enHeRbIsMrab;biT GrapgMode ehIyRtlb;eTA TextMode vij .

VIII. Procedure
-

KUsctuekaNEkg

rectangle(int x1, int y1, int x2, int y2 ) ;

KUsctuekaNEkgEdlman (X1,Y1) CakUGredaenncMnucmMuEkgxagelIEpkxageqVg/ nig


(X2,Y2) Ca kUGredaenncMnucmMuEkgxageRkamEpkxagsaM .
-

bar(int x1, int y1, int x2, int y2 ) ;

KUsctuekaNEkgEtmanpat;BN_enApxagkg .
249

xusBI rectangle() Rtg; rectangle() RKan;EtKUsRCugrbs;ctuekaNEkgb:ueNaH


vaGt;pat;BN_xag kgeT .
bar()
-

drawpoly( int NumPoints ,int PolyPoints) ;

Ca Function KUsBhuekaN/ RtIekaN .


-polypoints : Ca)a:ra:EmRtGt;RbePT/ vapkkUGredaennbNakMBUlrbs;BhuekaN .
-numpoints : bgajcMnYnkUGredaenkg PolyPoints ( CacMnYnkMBUlrbs;BhuekaN ) .
kUGredaenmYyman tMlBIrCaRbePT int. tMlmYyCaGab;sIus X, nigtMlmYyeTtCaGredaen Y
.
cMNaM edIm,IKUsBhuekaNEdlman N RCug/ eyIgRtUvpl; N+1 kUGredaeneTA DrawPoly .
Example :
# include<graphics.h>
# include<stdlib.h>
#include<conio.h>
main()
{ int gd=DETECT, gm, errorcode;
int poly={20,240,620,20,590,460,320,240,20,240} ;
initgraph(&gd,&gm.C:\\TC\\BGI);
errorcode = graphresult();
if (errorcode != grOk())
{ printf(Graphics error : %s\n,grapherrormsg(errorcode));
printf( Press any key to halt );
getch();
exit(1);
}
drawpoly(5,poly);
getch();
closegraph();
return 0;
}

250

IX.

kMNt;BN_rUbPaB

* setfillstyle ( int Pattern, int Color) ;

kgenaH Pattern CacMnYnKt;BI 0 dl; 12 EdlmaneQaH


nigtMlEdl)ankMNt;niymymehIy
EmptyFill
=0;
{ BN_exA }
SolidFill
=1;
{ BN_Rkem:ARbepH }
LineFill
=2;
LtSlashFill = 3 ;
SlashFill
=4;
BkSlashFill = 5 ;
LtBkSlashFill = 6 ;
HatchFill
=7;
XHatchFill = 8 ;
InterLeaveFill
WideDotFill = 10 ;
CloseDotFill = 11 ;
UserFill
= 12 ;

{ - - -}
{///}
}
{/ / /
{\ \ \
}
{\ \ \ }
{Light Hatch Fill}
{Heavy cross hatch Fill}
= 9 ; {Interleaving line Fill}
{widely spaced dot Fill}
{Closely Spaced dot Fill}
{
User
}

Edlmanbnat;tUc
EdlmanbnatRkas;;

pat;tamBN_rbs;

begIt

Example :
# include<graphics.h>
# include<conio.h>
# include<stdlib.h>
main()
{int gd=0, gm maxx,maxy ;
char pattern[8]={0x00, 0x70, 0x20, 0x27, 0x25, 0x27,0x04,0x04} ;
initgraph(&gd, &gm, C:\\TC\\BGI);
maxx=getmaxx(); maxy=getmaxy();
setcolor(getmaxcolor());
setfillpattern(pattern, getmaxcolor());
bar(0, 0, maxx, maxy);
getch();
getfillpattern(pattern);
pattern[4] -= 1 ;
pattern[5] -= 3 ;
pattern[6] +=3 ;
pattern[7] -= 4 ;
setfillpattern(pattern,getmaxcolor());
bar(0, 0, max, maxy );
getch ();
closegraph();
251

}
* floodfill(int X, int Y, int Border) ;

eyIgeRbI function enHedIm,Ipat;BN_eGayctuekaN/ RtIekaN/ BhuekaN>>>>>>>>>>/cMnuc (X,Y)


RtUvsit enAkgpu n ctuekaN. BN_Edlpat;enaHRtUv)anbegIteLIgeday setfillstyle b
setfillpattern . Border (mantMlBI 0 dl; 15) CaBN_rbs;RCug .
ebIcMnuc (X,Y) sitenAkgpctuekaN/ enaHEpkxagkgctuekaN RtUv)anpat;BN_ EtebIcMNuc
(X,Y) enAeRkA ctuekaNvijenaHKWEpkxageRkActuekaNRtUv)anpat;BN_ .
* fillpoly( NumPoints , PolyPoints) ;

KUsBhuekaNehIymanpat;BN_Epkxagkg .
+ PolyPoints : Ca)a:ra:EmRtKanRbePTva pkkUGredaenbNakMBUlrbs;BhuekaN .
+NumPoints: R)ab;cMnYnkUGredaenkg PolyPoints. KWCacMnYnkMBUlrbs;BhuekaN .
kUGredaen mYy man tMlBIr (word : tMlX nig tMlY) . FillPoly
pat;BN_BhuekaNedayeRbI BN_EdlbegIteday SetFillStyle b SetFillPattern .
cMEnkRCugrbs;BhuekaN/ RtUv)anKUsCamYy RbePT bnat; nig BN_ EdlbegIteLIgeday
SetLineStyle .
X. ViewPort :

CatMbn;ctuekaNEkgmYyenaelI Screen EdleyIgGacGnuvtbNa


rbs; Graphic enAkg enaH hak;bIdUcCa Screen tUcmYy .
Viewport

Procedure

setviewport (int X1,int Y1,int X2,int Y2, Clip) ;

Ca Function kMNt; ViewPort mYyenAelI Screen CamYy (X1,Y1,X2,Y2)


CakUGredaenrbs; ViewPort . eRkay BIehA esetviewport / kUGredaen (0,0) nbNa
Statement KUsnwgkayCamMuEkg xagelI EpkxageqVgrbs; ViewPort KW (X1,Y1) .
)a:ra:EmRt
Clip
GacmantMl
True
=
clipon
:
GnuBaatieGayemIleXIjbNabnat;EdlKUsecjeRkA ViewPort , cMENk clipoff
nwgminGacemIleXIj bnat;EdlKUsecjeRkA ViewPort .
252

(X1,Y1)
(0,0)

(X2,Y2)

mMukUGredaenfIeRkayBIehA setviewport(X1,Y1,X2,Y2, Clip)


eyIgGacpas;br ViewPort enARKb;kngkgkmviFIedIm,I)ankUGredaenKUs nig tMbn;KUssmRsb.
]TahrN_KUsRkahVicrbs;smIkarEdlmanmMu kUGredaenenAkNal SCREEN :
setviewport (getmaxx() / 2, getmaxy() / 2, getmaxx(), getmaxy(), 1
);

XI.

bNaGnuKmn_epSgeTot

*setlinestyle(int

LineStyle,int Pattern,int Thickness);

Ca Function sMrab;kMnt;rageGaybnat;
* bar3d (int x1, int y1 ,int x2 ,int y2, int depth, top );

Ca Function sMrab;KUsctuekaNe)a:gkglMhr .

kat;rUb/ biTrUb nig begItrUbPaBEdlmanclna


rkSaTukrUbPaB
XII.

edIm,IrkSaTukrUbPaBNamYy/ eyIgRtUveRbI Block Memory mYyEdlmanragCa


ctuekaNEkgBT_CMuvij rUbPaBenaH . eRkaymkeyIgrkSapRklactuekaNEkgenaH.edIm,IKNnaTMhM
Block Memory rag ctuekaN EkgpkrUbPaBenaH/ eyIgeRbI Function manRsab; KW
+ imagesize(int X1, int Y1,int X2 , int Y2 ) ;

253

edIm,IerbcM Memory rkSaTukrUbPaB/eyIgeRbI


minkMnt; RbePT .

Function

enHbegIt

Dynamic Variable

+ getimage(int X1,int Y1,int X2, int Y2 , *PBitMap) ;

Ca

edIm,I Copy bNacMnucnrUbPaBenAelI Screen EdlsitkgctuekaN


(X1,Y1,X2,Y2) cUleTA kg Memory EdlRtUv PBitMap CaGk Index, edayeRbI
Procedure GetMem xagelI .
Procedure

+ putimage(int X, int Y , *PBitMap , int CopyMode) ;

rMedaHrUbPaBEdleyIg)an Copy eday GetImage, mkelI Screen Rtg;cMnuc (X,Y).


kgenaH CopyMode CaRbePT Copy rUbPaBmkelI Screen :
Copy = 0
XORPut = 1
ORPut = 2
ANDPut = 3
NOTPut = 4

edIm,IbegItrUbPaBmanclna kg GraphMode :
- KUsrUb/ Copy rUbenaHcUleTAkg DynamicVariable :
- begIt (Delay) .
- lubrUbenaH/ rMedaHrUbPaBeLIgvijedayeRbI putimage();
- KUsrUbPaBenATItaMgfI .
*

# include<graphics.h>
# include<conio.h>
# include<stdlib.h>
# include<alloc.h>
# include<stdio.h>
void save_screen(void far *buf[4]);
void restore_screen(void far *buf[4]);
int maxx, maxy ;
int main(void)
{ int gd=DETECT, gm ,errorcode ;
void far *ptr[4];

254

initgraph(&gd,&gm,c:\\tc\\bgi);
erorcode = graphresult();
if(errorcode != grOk())
{printf( Graphics error : %s\n,grapherrormsg(errorcode));
printf(Press any key to halt:);
getch();
exit(1);
}
maxx=getmaxx(); maxy=getmaxy();
rectangle(0,0,maxx,maxy);
line(0,0,maxx,maxy);
line(0,maxy,maxx,0);
save_screen(ptr);
getch();
cleardevice();
restore_screen();
getch();
closegraph();
return 0;
}
void save_screen(void far *buf[4])
{ unsigned side;
int ystart = 0 ,yend , yincr , block ;
yincr = (maxy+1)/4;
yend = yincr;
size = imagesize(0,ystart,maxx,yend);
for(block=0; block<=3;block++)
{
if ((buf[block]=farmalloc(size))== NULL)
{closegraph();
printf(Error ! not enough heap space in
save_screen());
exit(1);
}
getimage(0,ystart,maxx,yend,buf[block]);
ystart = yend + 1;
yend += yincr +1;
}
}
void restore_screen(void far *buf[4])
{
int ystart = 0 , yend, yincr , block;
yincr = (maxy+1)/4;
yend = yincr;
for (block=0;block<=3;block++)
{
putimag(0,ystart,buf[block],COPY_PUT);
farfree(buf[block]);
ystart = yend + 1;

255

yend +=yincr + 1;
}
}

=====*=====

256

You might also like