In a C program, first step is to initialize the graphics drivers on the computer. This is done using the
method provided in
library. In the next few pages we will discuss graphics.h library in more details. Important functions in
library will be discussed in details and samples programs will be provided to show the power of C programming language especially for graphic programming developing graphical user interfaces.

We will restrict our discussion on Graphics in C to 16 bit C programming, MS DOS environment and 640×480 VGA monitor. Complete reference of graphics.h library and explanation of each method in that library can be found in the following articles.

  1. Graphics Library (graphics.h) Reference (part 1)
  2. Graphics Library (graphics.h) Reference (part 2)
  3. Graphics Library (graphics.h) Reference (part 3)

Graphics mode Initialization – initgraph() function

First of all we call the
function that will initialize the graphics mode on the computer. The method
has the following prototype.
void initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
The method
initializes the graphics system by loading the graphics driver from disk (or validating a registered driver) then putting the system into graphics mode. The method
also resets all graphics settings (color, palette, current position, viewport, etc.) to their defaults. The initialization result is set to 0 which can be retrieved by calling

method has the following parameters.


This is an integer value that specifies the graphics driver to be used. You can give
a value using a constant of the graphics_drivers enumeration type which is listed in
. Normally we use value as “0” (requests auto-detect). Other values are 1 to 10 and description of each enumeration type is listed here.


This is an integer value that specifies the initial graphics mode (unless
*graphdriver = DETECT
). If
*graphdriver = DETECT
, then
method sets *graphmode to the highest resolution available for the detected graphics driver. You can give *graphmode a value using a constant of the graphics_modes enumeration type and description of each enumeration type is listed here.


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

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

Both *graphdriver and *graphmode parameters 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
, *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 auto detect the attached video adapter at run time and pick the corresponding driver. If you tell initgraph to auto detect, it calls detectgraph to select a graphics driver and mode.

method loads a graphics driver by allocating memory for the driver (through
method call), 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 simple program that initializes the graphics mode in C programming language and print the line in graphics mode.

The below program draws a circle in the current drawing color with its center at (150,150) and the radius (100) given by radius.

Normally the screen which we see in DOS/Command Mode is in the text mode which means it is meant for text only. And for graphics we need to initialize graphics mode using initgraph() method defined in graphics.h?.

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.


This function unloads the graphics drivers and returns the screen back to text mode.

Here a sample program to illustrate how to use BARS which are used for visual statistics. The bar is filled using the current fill pattern and fill color. Bar method accepts parameters i.e. left, top, right and bottom. The setfillstyle() method can be used to fill the bar with a different color or pattern.