Software & Finance





Turbo C Graphics - settextstyle function





settextstyle takes 3 input arguments namely font style, direction (horizontal or vertical) and font size. The default values when you initialize graphics are set to DEFAULT_FONT, HORIZ_DIR and font size of 1. It can be changed to GOTHIC_FONT, TRIPLEX_FONT, SMALL_FONT or SANS_SERIF_FONT. The direction can be changed to VERT_DIR.

 

outtext is the function used to display the given string on graphics mode. It uses the font style set by settextstyle and the current position. The current position can be changed with moveto function. Alternatively you can use outtextxy function which takes xpos, ypos and string for displaying at a particular location. outtextxy does the work of both moveto and outtext functions.

 

In this example, the string "background: %d, foreground: %d, maxcolors:%d" is displayed using outtext and softwareandfinance.com is displayed using outtextxy.

 

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