Turbo C Graphics - setfillstyle function
setfillstyle function is takes input arguments - style and color.
The possible style values are, EMPTY_FILL, SOLID_FILL, LINE_FILL, LTSLASH_FILL, SLASH_FILL, BKSLASH_FILL, LTBKSLASH_FILL, HATCH_FILL, XHATCH_FILL, INTERLEAVE_FILL, WIDE_DOT_FILL, CLOSE_DOT_FILL, USER_FILL
The possible color values are from 0 - 15 BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE
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
|