Graphics in C Language

View previous topic View next topic Go down

Graphics in C Language

Post  Raghuram Iyer on Tue May 10, 2011 9:51 am

We will restrict our discussion on Graphics in C Language to 16 bit C
programming and MS DOS environment. In a C Program first of all you need
to initialize the graphics drivers on the computer. This is done using
the initgraph method provided in graphics.h library. In the next few
pages we will discuss graphics.h library in details. Important functions
in graphic.h library will be discuees in details and samples programmes
will be provided to show the power of C programming language.

Graphics mode Initialization

First of all we have to call the initgraph function that will
intialize the graphics mode on the computer. initigraph have the
following prototype.

void initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);

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.


Integer that specifies the graphics driver to be used. You can give
graphdriver a value using a constant of the graphics_drivers enumeration


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


Specifies the directory path where initgraph looks for graphics drivers (*.BGI) first.

  1. If they’re not there, initgraph looks in the current directory.
  2. If pathtodriver is null, the driver files must be in the current directory.

*graphdriver and *graphmode must be set to valid graphics_drivers and
graphics_mode values or you’ll get unpredictable results. (The
exception is graphdriver = DETECT.)

After a call to initgraph, *graphdriver is set to the current
graphics driver, and *graphmode is set to the current graphics mode. You
can tell initgraph to use a particular graphics driver and mode, or to
autodetect the attached video adapter at run time and pick the
corresponding driver. If you tell initgraph to autodetect, it calls
detectgraph to select a graphics driver and mode.

Normally, initgraph loads a graphics driver by allocating memory for
the driver (through _graphgetmem), then loading the appropriate .BGI
file from disk.As an alternative to this dynamic loading scheme, you can
link a graphics driver file (or several of them) directly into your
executable program file.

Here is a sample program that initializes the graphics mode in C Language.

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
exit(1); /* return with error code */
/* draw a line */
line(0, 0, getmaxx(), getmaxy());
/* clean up */
return 0;

The graphics programming in c language is discussed in brief to provide an over view to the beginner.

/* Sample program to draw a circle*/
int gd=DETECT,gm;
initgraph(&gd,&gm,""); /* initialization of graphic mode */
closegraph(); /* Restore orignal screen mode */
/* End of program */

Normally the screen which u view in DOS is in the text mode which means
it is meant for text. And for graphics u need to initialize graphics

mode. And for this to happen u need to include graphics.h?.

circle(x coordinate ,y coordinate , radius);

The circle command takes a X coordinate which means Vertical axis and
Y coordinate which means Horizontal axis. And the last one is the
radius of the circle. closegraph();

With out this function the screen mode will still remain in graphic
mode and when u come out, to DOS u will see a different screen, which is
not in the text mode.

/*A program to draw a space with stars*/
int gd=DETECT,gm;
int i,x,y;

/*Here a sample program to illustrate how to use BARS which are used for visual statistics */
main() {
int gd=DETECT,gm,maxx,maxy,x,y,button;
outtextxy(100,153,"<-X axis");
outtextxy(60,50,"<-Y axis");
/* End of program */

Raghuram Iyer

Posts: 6
Join date: 2011-05-08

View user profile

Back to top Go down

View previous topic View next topic Back to top

- Similar topics

Permissions in this forum:
You cannot reply to topics in this forum