在图形方式下,BGI提供的两种输出文本的方式

 zhushican   2022-09-04 19:06   281 人阅读  0 条评论

1.BGI字体

在图形方式下,BGI提供了两种输出文本方式:一种是位象字符(或称点阵字符);另一种是笔划字体(或称矢量字符)。其中位映象字符为缺省方式,即在一般情况下输出文本时,都是以位映象字符显示的。

在图形方式下,BGI提供的两种输出文本的方式

笔划字体不是以位模式表示的,每个字符被定义成一系列的线段或笔划的组合。笔划字体可以灵活地改变其大小,而且不会降低其分别率。系统提供了4种不同的笔划字体,即:小号字体、三倍字体、无寸线字体和黑体。每种笔划字体都存放在独立的字体文件中,文件扩展名为.chr,在一般情况下,安装在bgi目录下。为了使用笔划字体,必须装入相应的字体文件。

2.文本输出

(1).settextstyle函数

函数settextstyle用于在使用笔划字体之前装入字体文件。其调用格式为:

Settextstyle(font,direction,csize);


函数所需要的三个参数,其含义如下:

font:是一个整型数,用来指定所使用的字体,其取值见表9-8所示:

                            表9-8 font字体

 

符号名

 
 

数值

 
 

含义

 
 

DEFAULT_FONT

 
 

0

 
 

8*8位图字体(缺省)

 
 

TRIPLEX_FONT

 
 

1

 
 

三重矢量字体

 
 

SMALL_FONT

 
 

2

 
 

小号矢量字体

 
 

SANSSERIF_FONT

 
 

3

 
 

无寸线矢量字体

 
 

GOTHIC_FONT

 
 

4

 
 

哥特矢量字体

 

Direction:是一个整型数。用来指定文本的输出方向,取值见表9-9所示:

                           表9-9 Direction取值

 

符号名

 
 

数值

 
 

含义

 
 

HORIZ_DIR

 
 

0

 
 

从左到右输出(缺省)

 
 

VERT_DIR

 
 

1

 
 

从上到下输出

 

Csize:是一个整型数,表示字符的大小。该参数实际上是一个放大系数,它表示对8*8点阵的放大倍数,其取值的范围是1—10,它既影响点阵字符,也影响笔划字体。

调用settextstyle函数后,设置了输出字符的字体、输出方向以及大小,这些设置将影响下面的outtext和outtextxy所产生的文本输出。

(2).outtext函数

函数outtext用于在当前位置输出一个文本字符串。其调用格式为:

Outtext(*text);


参数text是一个字符串。例如:

Outtext(“china university of Mining and Technology”);将在当前位置输出一个字符串:chinauniversity of Mining and Technology


(3).outtextxy函数

函数outtextxy用于在指定位置输出一个字符串。其调用格式为:

Outtextxy(x,y,*text);

参数x,y为指定坐标点,text为字符串。

9-10】钟表图形绘制

#include <graphics.h>

#include <conio.h>

#include <math.h>

#define PI 3.14159

void Draw(int hour, int minute, int second)

{

    double a_hour, a_min,a_sec; /*时、分、秒针的弧度值*/

    int x_hour, y_hour, x_min,y_min, x_sec, y_sec; /*时、分、秒针的末端位置*/

    /* 计算时、分、秒针的弧度值*/

    a_sec = second * 2 * PI /60;

    a_min = minute * 2 * PI /60 + a_sec / 60;

    a_hour= hour * 2 * PI / 12+ a_min / 12;

    /* 计算时、分、秒针的末端位置*/

    x_sec = 320 + (int)(120 *sin(a_sec));

    y_sec = 240 - (int)(120 *cos(a_sec));

    x_min = 320 + (int)(100 *sin(a_min));

    y_min = 240 - (int)(100 *cos(a_min));

    x_hour= 320 + (int)(70 *sin(a_hour));

    y_hour= 240 - (int)(70 *cos(a_hour));

    /*画时针*/

    setlinestyle(PS_SOLID,NULL);

    setcolor(WHITE);

    line(320, 240, x_hour,y_hour);

    /* 画分针*/

    setlinestyle(PS_SOLID,NULL);

    setcolor(LIGHTGRAY);

    line(320, 240, x_min,y_min);

    /*画秒针*/

    setlinestyle(PS_SOLID,NULL);

    setcolor(RED);

    line(320, 240, x_sec,y_sec);

}

 

void main()

{

    initgraph(640, 480);   /* 初始化 640 x 480 的绘图窗口*/

    /*绘制一个简单的表盘*/

    circle(320, 240, 2);

    circle(320, 240, 60);

    circle(320, 240, 160);

    outtextxy(296, 310,"BestAns");

    /*设置 XOR 绘图模式*/

    setwritemode(R2_XORPEN);/*设置 XOR 绘图模式*/

    /*绘制表针*/

    SYSTEMTIME ti;     /* 定义变量保存当前时间*/

    while(!kbhit())     /*按任意键退出钟表程序*/

    {

        GetLocalTime(&ti);        /* 获取当前时间*/

         Draw(ti.wHour,ti.wMinute, ti.wSecond);   /* 画表针*/

         Sleep(1000);         /* 延时 1 */

         Draw(ti.wHour,ti.wMinute, ti.wSecond);   /* 擦表针(擦表针和画表针的过程是一样的)*/

    }

    closegraph();     /*关闭绘图窗口*/

}


程序运行结果:

在图形方式下,BGI提供的两种输出文本的方式

9-9 运行效果图


本文地址:http://www.sclingchen.com/post/140.html
版权声明:本文为原创文章,版权归 zhushican 所有,欢迎分享本文,转载请保留出处!

评论已关闭!