Software & Finance

Turbo C Graphics - textwidth function

textwidth function is used to get the width of the specified string and textheight is used to get the height of the specified string. settextstyle is used to change font size, family and direction. Based on the recent settings on settextstyle, textwidth function returns the width and textheight returns the height of the specfied string.


These functions are very useful when you have to center the text based on your own rectangle. Look at the sample code on how it centers the text using the simple formula.


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

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


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[] = "";


       // Detect the graphics driver and mode


       // initialize the graphics mode with initgraph

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


       gresult = graphresult();

       if(gresult != grOk)







       // set the background color


       // set the foreground color


       // draw a white color border with rectangle



       // 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


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

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


       settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);




       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);