Software & Finance





Turbo C Graphics - bar function





bar function is similar to rectangle but also fills with the style and color set by setfillstyle function. bar draws filled rectangle by accepting left, top, right and bottom position.

 

In this example, bar function is used to draw a BLUE color bar and its position are calculated based on the screen size by giving space to margin. Note that bar just fills with the style and pattern but it will not have any border. If you want to have border color for your bar, then you also need to use the rectangle along with bar.

 

       margin = 100; // 100 pixel margin

       left = margin;

       top = margin;

       bottom = getmaxy() - margin;

       right = getmaxx() - margin;

       // draw a bar with solid fill on blue color

       // use rectangle to have a white color border

       setfillstyle(SOLID_FILL, BLUE);

       bar(left, top, right, bottom);

       rectangle(left, top, right, bottom);;

 

 

Back to Turbo C Graphics Index



Source Code


#include <graphics.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <dos.h>

#include <stdlib.h>

 

void main()

{

 

       int i, grd, grm;

       int x, y, w;

       int left,top,right,bottom;

       int margin, width, height;

       int gresult;

       int cx, cy;

       char msg[512];

       char buffer[] = "softwareandfinance.com";

 

       // Detect the graphics driver and mode

       detectgraph(&grd,&grm);

       // initialize the graphics mode with initgraph

       initgraph(&grd, &grm, "");

 

       gresult = graphresult();

       if(gresult != grOk)

       {

              printf(grapherrormsg(gresult));

              getch();

              return;

       }

 

       // set the background color

       setbkcolor(RED);

       // set the foreground color

       setcolor(WHITE);

       // draw a white color border with rectangle

       rectangle(0,0,getmaxx(),getmaxy());

 

       // find the text width and text height

       width = textwidth(buffer);

       height = textheight(buffer);

       margin = 100; // 100 pixel margin

       left = margin;

       top = margin;

       // calculate the right and bottom with margin and getmaxx and getmaxy function

       bottom = getmaxy() - margin;

       right = getmaxx() - margin;

 

       // draw a bar with solid fill on blue color

       // use rectangle to have a white color border

       setfillstyle(SOLID_FILL, BLUE);

       bar(left, top, right, bottom);

       rectangle(left, top, right, bottom);

 

       // change the text foreground color to yellow

       setcolor(YELLOW);

       cx = (right + left - width) / 2;

       cy = (bottom + top - height) / 2;

 

       settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

       outtextxy(cx,cy,buffer);

 

       setcolor(WHITE);

       sprintf(msg, "background: %d, foreground: %d, maxcolors: %d", getbkcolor(), getcolor(), getmaxcolor());

       width = textwidth(msg);

       cx = (right + left - width) / 2;

       cy += textheight(msg) + 10;;

 

       // use moveto and outtext function instead of outtextxy

       moveto(cx, cy);

       outtext(msg);

 

       getch();

       closegraph();

}

 

 

Output