Turbo C graphics programming
by Ranjith | November 20th, 2008.To start with graphics programming, Turbo C is a good choice. Even though DOS has its own limitations, it is having a large number of useful functions and is easy to program. To implement graphics algorithms, To give graphical display of statistics, To view signals from any source, we can use C graphics. Here is a article to start programming with Turbo C. ‘Run and Learn’ is our method. We have used source codes throughout the explanations. Just execute them to understand what is happening.
Turbo C has a good collection of graphics libraries. If you know the basics of C, you can easily learn graphics programming. To start programming, let us write a small program that displays a circle on the screen.
/* simple.c
example 1.0
*/
#include<graphics.h>
#include<conio.h>
void main()
{
int gd=DETECT, gm;
initgraph(&gd, &gm, “c:\\turboc3\\bgi ” );
circle(200,100,150);
getch();
closegraph();
}
To run this program, you need graphics.h header file, graphics.lib library file and Graphics driver (BGI file) in the program folder. These files are part of Turbo C package. In all our programs we used 640×480 VGA monitor. So all the programs are according to that specification. You need to make necessary changes to your programs according to your screen resolution. For VGA monitor, graphics driver used is EGAVGA.BGI.
Here, initgraph() function initializes the graphics mode and clears the screen. We will study the difference between text mode and graphics mode in detail latter.
InitGraph: Initializes the graphics system.
Declaration: void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
Remarks: To start the graphics system, you must first call initgraph.
initgraph initializes the graphics system by loading a graphics driver from disk (or validating a registered driver) then putting the system into graphics mode.
initgraph also resets all graphics settings (color, palette, current position, viewport, etc.) to their defaults, then resets graphresult to 0.
Arguments:
*graphdriver: Integer that specifies the graphics driver to be used. You can give graphdriver a value using a constant of the graphics drivers enumeration type.
*graphmode : Integer that specifies the initial graphics mode (unless *graphdriver = DETECT). If *graphdriver = DETECT, initgraph sets *graphmode to the highest resolution available for the detected driver. You can give *graphmode a value using a constant of the graphics_modes enumeration type.
pathtodriver : Specifies the directory path where initgraph looks for graphics drivers (*.BGI) first. If they’re not there, initgraph looks in the current directory. If pathtodriver is null, the driver files must be in the current directory. This is also the path settextstyle searches for the stroked character font files (*.CHR).
closegraph() function switches back the screen from graphcs mode to text mode. It clears the screen also. A graphics program should have a closegraph function at the end of graphics. Otherwise DOS screen will not go to text mode after running the program. Here, closegraph() is called after getch() since screen should not clear until user hits a key.
If you have the BGI file in the same folder of your program, you can just leave it as “” only. you need not mention *graphmode if you give *graphdriver as DETECT.
In graphics mode, all the screen co-ordinates are mentioned in terms of pixels. Number of pixels in the screen decides resolution of the screen. In the example 1.0, circle is drawn with x-coordinate of the center 200, y-coordinate 100 and radius 150 pixels. All the coordinates are mentioned with respect to top-left corner of the screen.
Basic Shapes and Colors:
Now let us write a program to draw some basic shapes.
/*
shapes.c
example 1.1
*/
#include<graphics.h>
#include<conio.h>
void main()
{
int gd=DETECT, gm;
int poly[12]={350,450, 350,410, 430,400, 350,350, 300,430, 350,450 };
initgraph(&gd, &gm, “”);
circle(100,100,50);
outtextxy(75,170, “Circle”);
rectangle(200,50,350,150);
outtextxy(240, 170, “Rectangle”);
ellipse(500, 100,0,360, 100,50);
outtextxy(480, 170, “Ellipse”);
line(100,250,540,250);
outtextxy(300,260,”Line”);
sector(150, 400, 30, 300, 100,50);
outtextxy(120, 460, “Sector”);
drawpoly(6, poly);
outtextxy(340, 460, “Polygon”);
getch();
closegraph();
}
Here is the screenshot of output:

Output of above program
Here, circle() function takes x, y coordinates of the circle with respect to left top of the screen and radius of the circle in terms of pixels as arguments. Not that, in graphics, almost all the screen parameters are measured in terms of pixels.
Function outtextxy() displays a string in graphical mode. You can use different fonts, text sizes, alignments, colors and directions of the text that we will study later. Parameters passed are x and y coordinates of the position on the screen where text is to be displayed. There is another function outtext() that displays a text in the current position. Current position is the place where last drawing is ended. These functions are declared as follows:
void far outtextxy(int x, int y, char *text);
void far outtext(char *text);
Pages: 1 2






January 29th, 2009 at 5:34 pm
please send image compression program using C.
March 9th, 2009 at 7:33 am
when i run the followed program, i have got error msg.
program
/* simple.c
example 1.0
*/
#include
#include
void main()
{
int gd=DETECT, gm;
initgraph(&gd, &gm, “c:\\turboc3\\bgi ” );
circle(200,100,150);
getch();
closegraph();
}
error
1.undefined symbol _closegraph
2.undefined symbol _circle
3.undefined symbol _initgraph.
and also i cant run any graphic program successfully. these types of errors are showing.
plz help me to solve this problem.
March 9th, 2009 at 7:35 am
sry, idnt know about image compression program.
March 22nd, 2009 at 12:17 pm
i wanna program which detects circle which is actually read from paint
April 7th, 2009 at 2:57 pm
shabeeb ahamed ,just you try this one once.
#include
#include
void main()
{
int gd=DETECT, gm;
initgraph(&gd, &gm, “” );
circle(200,100,150);
getch();
closegraph();
}
April 21st, 2009 at 11:38 am
please tell me about the turbo c graphics text explicitly
April 27th, 2009 at 12:58 pm
dis was pretty useful… but i have this project to implement the dijkstra’s algorithm for directed graphs and we were required to draw the graph in c. i have this problem in making the arrows for the directed edges as well as placing the edges witout criss crossing
April 28th, 2009 at 4:59 pm
Can any one tell me how to draw rounded rectangle and sphere?
July 9th, 2009 at 9:59 am
i need a program to draw all d figures present in car digital display… like indicators, petrol sign,etc.. can u help me in dis..
August 23rd, 2009 at 6:28 pm
Can anyone of you that could help me for the fulfilment of my requirement? I need the program that output like this..
describing figure
*it is any polygon figure that contain with string on it.
*it is combination color with shadow…
I highly expected your kindness……
August 31st, 2009 at 3:59 pm
how to correct the error -undefined symbol initgraph(),closegraph()?
September 3rd, 2009 at 4:04 pm
hi!! can i have a sample program for SWITCH CASE..thankS!!!
September 3rd, 2009 at 4:13 pm
you can send it to my email..michaeljordanl@yahoo.com!! thanks..
September 28th, 2009 at 9:23 pm
I need coding of visual bubble sort in C using graphics
September 30th, 2009 at 2:41 pm
Can any please give me a program of graph with respect to x and y
in which we can take the input of x and y and the graph is plotted
please send me as soon as possible
nareshkumar326@hotmail.com
thanking u in anticipation.
October 6th, 2009 at 6:55 pm
can you help us…?????
what is the reason why when i run the program that have a graphics…
the message is only “watch”
October 6th, 2009 at 6:57 pm
is there a connection in the monitor why turbo c that have graphic cant run….?????
please badly needed……
just send 2 my mail
mazieamolo@yahoo.com
tnx
November 19th, 2009 at 10:41 pm
need some other graphical codes like marquee
January 6th, 2010 at 6:58 pm
those who are receiving the message
linking error
1.undefined symbol _closegraph
2.undefined symbol _circle
3.undefined symbol _initgraph.
they are needed change some turobo c ide settings as
1 goto “option” menu of the menu bar
2 next to linker sub menu
3 and then to Libraries
3 put a [X] on graphics library
and the program would work perfectly fine
January 11th, 2010 at 7:45 pm
could any 1 tell me how to get to know wat address is to be specified in initgraph declaration i.e. like”c:\\tc\\bgi” my compiler cant include graphics.h. wher as i have graphics .h installed.
January 13th, 2010 at 11:35 pm
@shray
just try this
in the bgi folder in tc ,copy a file named egavga.bgi
and paste it in the bin folder ( from where we start c++)
then u no longer need to put any path in the initgraph function.
January 14th, 2010 at 2:02 pm
pleasa include syntax of each functions
January 26th, 2010 at 5:07 pm
hi 2 all…
i have some doubt…
m working in graphical mode…
in my program i need to clear screen again and again in graphical mode only thats y i cant use closegraph() again and again
and if i use clrscr() then the page become white..
so can any1 tell me that how can i clear my screen….
most probably there is some function for this can any1 tell me that function name or can help me in any way…
m very thankful 2 u;;
with regardsss