C/C++

C++ Graphics with Example codes for drawing lines, rectangle and circle using Graphics function

C++ GRAPHICS Introduction:

C++ GRAPHICS Functions relating to graphics are used to create different shapes in different colors. The graphics functions require a graphics monitor (nowadays almost all computers have graphics monitors) and a graphics card such as VGA, SVGA or EGA. Color monitor is recommended for viewing graphics in colors.

The graphics include:

  • Lines in different colors and styles.
  • Different shapes like circles, rectangles in different styles.
  • Text in different fonts, sizes, and styles.

The following files are needed with the C++ compiler to work in graphics:

  • The Header File “graphics.h” that contains built-in graphic functions. This header file is included in the program.
  • Borland Graphics Interface (BGI) files. These files contain graphics driver programs that initialize the computer monitor into graphics mode. These files have BGI extension.
  • Character font style files having extension “chr”. These files are used to process text or characters in graphics mode.



Display Mode:

The output of a program can be displayed on the screen in two modes. These modes are:

  1. Text Mode
  2. Graphics Mode

C++ Text Mode:

In a text mode, the screen is normally divided into 80 columns and 25 rows. The topmost row is 0 and the bottom-most row is 24. Similarly. the leftmost column is 0 and the rightmost column is 79. In-text mode, only text can be displayed. The images and one graphics object cannot be displayed.

 C++ Graphics Mode:

Images and other graphic objects are displayed on the SC graphics mode. In this mode, the output is displayed on the computer screen in points or pixels.

In graphics mode, the screen is divided into small dots called For example, in the VGA monitor, the screen is divided into 480 row 640 columns of dots. Thus the VGA monitor screen is divide 640×480 pixels. The number of dots per inch is called resolution screen. The dots are very close to each other. The more the number pixels, the more clearer the graphics is.

The monitor types (display adapter) and their respective resolution are given below.

Monitor type Resolution Color
CGA

 

VGA

 

SVGA

640×200

 

640×480

 

800×600

16

 

16

 

256


Initializing C++ Graphics Mode:

The computer display system must be initialized into graphics mode before calling the graphics function.

The “initgraph” function is used to initialize the display into graphics mode. This function is a part of the “graphics.h” header file. So this file is included in the program before executing “initgraph” function.

The syntax of initgraph” function is:

initgraph(&driver, &mode, “path”);

Where:

Driver:

Represents the graphics driver installed on the computer. It may be an integer variable or an integer constant identifier, e.g. CGA, EGA, SVGA, etc.

The-graphics driver can also be automatically detected by using the keyword “DETECT”. Letting compiler detect the graphic driver is known as auto-detect.

If the driver is to be automatically detected, the variable driver is declared as of integer type and DETECT value is assigned to it as shown below.

int driver, mode;

driver = DETECT;

This statement must be placed before “initgraph” function. When the above statement is executed. he computer automatically detects the graphic driver and the graphics mode.

Mode

Represents output resolution on the computer screen. The normal mode for VGA is VGAHI. It gives the highest resolution

If the driver is on auto-detected, then its use is optional. The computer automatically detects the driver as well as the mode.

&

represents the addresses of constant numerical identifiers of driver and mode. If constants (e.g., VGA, VGAHI) are used, then “&” operator is not used as shown below:

initgraph (VGA, VGAHI, “path”);

path

Represents the path of graphic drivers. It is the directory on the dish where the BGI files are located. Suppose the BGI files are stored in “C:\TC\BGI”, then the complete path is written as:

initgraph (VGA, VGAHI, “C:\TC\\BGI”);

Use of double backslash “\” is to be noted. One backslash is used as escape character and other for the directory path. If the BGI files are in the current directory, then the path is written as:

initgraph (VGA, VGAHI, “ ”);

Note:

The variables for driver and mode must be of int type but their names may be different.


Example how to use initgraph computer display into C++ graphics mode:

In the above example, the BGI files must be in the specified directory, 1.e., in “c:\tclbgi”. If the BGI files are in the directory path”c:\tc” then the above statement is written as:

initgraph(&d, &m, “C:\\TC”);

The “cleardevice” Function:

The “cleardevice” function is used to clear the screen in graphics mode. It is similar to “clrscr” function that is used to clear the screen text mode. Its syntax is:

cleardevice();

Closing Graphics Mode

The “closegraph” function is used to restore the screen to the text mode.

When graphics mode is initialized, memory is allocated to the graphics system. When “closegraph” function is executed, it de-allocates all memory allocated to the graphics system. This function is usually used a the end of the program. Its syntax is:

closegraph();

Text in Graphics Mode

In graphics node: text can also be written in different fonts, styles. sizes, colors, and directions. The graphic functions commonly used to create and print text are described below.

 The “outtext” Function

The “outtext” function is used to print text on the computer screen in graphics mode. The text is printed at the current cursor position on the screen. Its syntax is:

outtext(string);

Where:

string

Represents the characters that are to be printed on the screen. It may be a string variable or string constant. The string constant is enclosed in double-quotes.



Example how to use cleardevice, closegraph and outtext function and print Programming digest into C++ graphics mode:

The “moveto” Function

The “moveto” function is used to move the current cursor position to a specified location on the screen where the output is to be printed. It is similar to “gotoxy” function used in text mode. Its syntax is:

moveto (x, y);

Where:

Represents the x-coordinate of the screen. It is the horizontal distance in pixels from the left of the screen. It may be an unsigned int type value or variable. For VGA, its value is from 0 to 639.

y

represents the y-coordinate of the scren. It is the vertical distance in pixels from the top of the screen. It may be an unsigned int type value or variable. For VGA, its value is from 0 to 479.

Example how to use moveto function and print Programming digest into C++ graphics mode:


The “outtextxy” Function

The “outtextxy” function is similar to the outtext” function but it is used to print text on the screen at a specified location. This function serves the purpose of both the “moveto” and “outtext” functions. Its syntax is:

outtextxy (x, y, string);

 where:

x

represents the x-coordinate of the screen. It is the horizontal distance in pixels from the left of the screen. It may be unsigned int type value or variable. For VGA, its value is from 0 to 639.

Y

represents the y-coordinate of the screen. It is the vertical distance in pixels from the top of the screen. It may be unsigned int type value or variable. For VGA, its value is from 0 to 479.

String

represents the string of characters that is to be printed on the computer screen. It may be a string variable or a string. constant. The string constant is enclosed in double quotes.

Example how to use outtextxy function and print Programming digest into C++ graphics mode:

The “settextstyle” Function

The “settextstyle” function is used to define the text style in graphics mode. The text style includes the font type, font size and text direction. The syntax of this function is given as: settextstyle (style, dir, size);

All the three parameters are of int type. These may be int type values or variables.

Where:

Style:

specifies the font style. Its value range is from 0 to 10.

Dir:

specifies the direction of the text in which it is to be displayed. Its value is from 0 to 1. It may be a numerical constant identifier. It is HORIZ DIR (for horizontal direction) or VERT_DIR (for vertical direction).

 Size:

specifies the font size of the text. Its value is from 0 to 72.


Example how to use settextstyle function and print Programming digest into C++ graphics mode:

The “setcolor” Function

The setcolor” function is used to define color of the objects and the text in graphics mode. Its syntax is: setcolor (co);

 where:

со

Represents the color. It may be an int type value or variable. For VGA, its value is from   0 to 15. It may also be a numerical constant identifier, e.g. BLUE, GREEN, RED etc.

 The “setbkcolor” Function

The “setbkcolor” function is used in graphics mode to define the background color of the screen. Its syntax is: setbkcolor(co);

Where:

co

Specifies the color. It may be an it type value or variable. For VGA. Its value is from 0 to 15. It may also be numerical constant identifier eg blue, green and red etc.



Example how to use setcolor and setbkcolor function and print Programming digest into C++ graphics mode:

Creating Objects in C++ Graphics Mode

Different objects, e.g. lines, circles, rectangles and many other shapes are created in graphics mode using various built-in functions. Following are the functions that are commonly used to create graphics objects:

The “circle” Function

The “circle” function is used to draw a circle on the screen. Its syntax is:

circle(x, y, radius);

All the three parameters are of int type. These may be int type values or variables.

Where

 x & y

Specifies the center point of the circle. These are the x- coordinate and y-coordinate of the center of the circle on the screen.

Radius

Specifies the radius of the circle.


Example how to make a circle using circle function in C++ graphics mode:

The “arc” Function

The arc function is used to draw a circular arc starting from a specified angle and up to another specified angle. Its syntax is:

arc (x, y, stangle, endangle, radius);

All the five parameters are of int types. These may be constants or variables.

Where:

 x & y

specify the center point of the circle. These are the x- coordinate and y-coordinate of the center of the arc on the screen.

 Stangle:

specifies the starting angle of the arc in degree.

Endangle:

specifies the ending angle of the arc in degree.

 radius:

specifies the radius of the arc.

Note:

The arc function can also be used to draw a circle by giving the starting angle 0 and ending angle 360. Similarly, it can also be used to draw line by giving the same values for starting and ending angles.


Example how to make  arc in c++ using arc function in graphics mode:

The “line” Function

The “line” function is used to draw a line between two points on the screen. Its syntax is:

 line (x1, y1, x2, y2);

All the four parameters are of int type. These may be integer type values or variables.

Where:

 x1 & y1

specify  the x & y co-ordinates of first point.

x2 & y2

specify the x & y co-ordinates of second point.

For example, to draw a line between left upper corner & right bottom corner of the screen for VGA monitor, the statement is written as:

line(0, 0, 639, 479);

 or

line (639, 479,0, 0);

The point (0, 0) represents the upper left corner of the screen and point (639, 479) represents the bottom right corner of the screen.

Similarly, to draw a line between bottom left corner & upper right corner of the screen (for VGA monitor), the statement is written as;

 line (0, 479, 639, 0);

or

 line (639, 0, 0, 479);

The point (0,479) represents the bottom left comer of the screen and point (639, 0) represents the upper right corner of the screen.



Example how to make lines in c++ using line function in graphic mode:

The “rectangle” Function

The “rectangle function is used to draw a rectangle between two points on the screen. Its syntax is:

 rectangle (x1, y1, x2, y2);

All four parameters are of int types. These may be integer type values or variables.

where

x1 & y1:

 specify the x & y co-ordinates of the first point.

x2 & y2:

 specify the x & y co-ordinates of the second | oint.

 For example, to draw a rectangle between upper left comer & bottom right corner of the screen (for VGA monitor), the statement is written as:

 rectangle(0, 0, 639, 479);

 or

rectangle (639, 479,0, 0);

The point (0, 0) represent the upper left corner of the screen and point (639, 479) represents the bottom right comer of the screen.

Example how to make a rectangle in c++ using the rectangle function in graphics mode:

The “setlinestyle” Function

The “setlinestyle” function is used to set the line style of different objects that are drawn. The lines of these objects can be drawn in different styles, patterns and thickness. These attributes of the line are defined through this function. Its syntax is:

 setlinestyle (style, pattern, thickness);

It has three parameters all of int types. These may be int type values or variables.

Where

style:

specifies the line style. Its value may be from 0 to 4.

pattern:

specifies the line pattern. Its value may be from 0 to 12.

thickness:

specifies the thickness of line. Its value may be from 0 to 3.


Example how to make stylish lines in c++  using setlinestyle function in graphic mode:

The “bar” Function

The “bar” function is used to draw a bar between two points on the screen. Its syntax is:

bar(left, top, right, bottom);

All the four parameters are of int types. These may be integer type values or variables.

Where

left & top :

specify the x & y co-ordinates of the first point. The “left” represents the x-coordinate of first point and the “top” represents the y-coordinate of the first point).

 right & bottom:

specify the x &.y co-ordinates of the second point. The “right” represents the x-coordinate of the second point and the “bottom” represents the y-coordinate of the second point).


Example how to use bar function in C++ graphics mode:

The “bar3d” Function

The “bar3d” function is used to draw a three-dimensional bar between two points on the screen. It is similar to the “bar” function. Its syntax is:

bar3d(left, top, right, bottom, depth, flag);

All six parameters are of int types. These may be integer type values or variables.

Where

 left & top:

specify the x & y co-ordinates of the first point. The “left” represents the x-coordinate of first point and the “top” represents the y-coordinate of the first point).

right & bottom:

specify the x & y co-ordinates of the second point. The “right” represents the x-coordinate of second point and the “bottom” represents the y-coordinate of the second point).

depth :

specifies the depth of the bar in pixels.

Flag :

specifies the flag put on the top of the bar. If its value is zero then no flag is put.

Example how to use bar3d function in C++ graphics mode:



The “getimage” Function

The getimage” function is used to save a bit image of the specified region into memory The syntax of this function is:

getimage (left, top, right, bottom, void far *bitmap);

where:

 left, top, right & bottom :

specify the int type values that define the region on the screen.

void far *bitmap :

specify the far pointer to store the captured image.

The storage capacity of far pointer is very high. Its range is upto 1 megabyte. This type modifier is usually used to capture & process images.

The “putimage” Function

 The “putimage” function is used to put the bit image previously saved with “getimage” back onto the screen. The syntax of this function is:

 putimage(left, top, void far *bitmap);

where:

left, top

represent the int type values to put the image to the upper left comer of the image placed at (left top)


Example how to use getimage and putimage function in C++ graphics mode:

Related Articles

One Comment

  1. As someone who is passionate about learning and personal growth, I can say without hesitation that this blog is one of my favorites. The author’s writing is both substantive and interesting, and their ability to provide insights and perspectives that are truly unique is truly commendable. I appreciate the level of research and attention to detail that goes into each post, and the author’s commitment to providing factual and balanced perspectives. What I love most about this blog is its ability to challenge my assumptions and make me think deeply about important issues. I can’t recommend this blog enough.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button