Turbo C Graphics - setbkcolor function
setbkcolor function is used to set the background color in graphics mode. To get the maximum number of colors, we can use the function getmaxcolor().
The possible color values are from 0 - 15 BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE and BLINK (128).
Once you set the background color, the backgroung is changed to the specified color. The sample code is given below on this page. This program uses RED color as its background.
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;
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
|