论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言图形编程(四、图形文本-01)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:36:22

一、图形文本函数
    85. outtext() 当前位置显示字符串函数
    86. outtextxy() 在(x,y)处显示字符串函数
    87. sprintf() 格式化输出函数
二、图形文本设置
    88. settextstyle() 设置文本型式函数
    89. settextjustify() 设置文本排齐函数
    90. setusercharsize() 设置用户字符比例函数
    91. gettextsettings() 获取文本设置函数
   
92. textheight() 文本高度函数
    93. textwidth() 文本宽度函数




   假如没有文本,图形也派不太多的用场。但是图形模式一旦设置,就无法进行常规文本显示。标号和文字信息只能用图形文本显示。图形文本显示与常规文本显示不同。例如,常规字符屏幕的位置其行列坐标表示已不再适用,这时单个字符可显示在屏幕上的任何位置。另外图形文本显示既可以水平显示,也可以垂直显示,字母大小也可以改变,同时可以提供几种不同的字型。总之,常规文本显示简单轻易;图形文本显示复杂不易操作。所以,在C语言里提供了几个函数来简化操作,控制图形文本显示。

一、图形文本函数
   在图形模式下,屏幕上显示字符串,可以用outtext(),outtextxy(),sprintf()。

85. outtext() 当前位置显示字符串函数
功能: 函数outtext() 在图形模式下用当前文本设置(字体、字符大小、文本显示方向及文本排齐方式)在当前位置显示一个字符串。
用法: 此函数调用方式为void outtext(char *string);
说明: 参数string指向要显示的字符串。
   调用该函数 也可以根据需要事先设置当前绘图色,选择字体、字符大小、确定文本显示方向及水平垂直两个方向的文本排齐方式。
   假如当前显示方向是水平的,那么当前光标位置CP会移动所显示字符的长度,否则CP不变;在图形模式下,光标不可见,但是即使是不可见光标,在屏幕上光标位置CP还是存在的。
   这个函数对应的头文件是graphics.h
例: 使用outtext()函数的例子见86.outtextxy()函数的例子中。

86. outtextxy() 在(x,y)处显示字符串函数
功能:函数outtextxy() 在图形模式下屏幕坐标像素点(x,y)处显示一个字符串。
用法: 这个函数的调用方式为void outtextxy(int x,int y,char *string);
说明: 参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。调用此函数不影响当前光标位置,当然光标是不可见的。
   该函数也要用当前绘图色、字体、字符大小、文本显示方向和水平垂直两个方向的文本排齐方式。
   outtextxy()的对应头文件是graphics.h
返回值: 无
例: 下面的程序中调用了outtext()和outtextxy()两个函数:
#include<graphics.h>
void main()
{
   int driver,mode;
   int i;
   driver=DETECT;
   mode=0;
   initgraph(&driver,&mode,"");
   outtext("This is an example");
   outtext("another line");
   for(i=100;i<200;i+=8)
      outtextxy(200,i,"hello");
   getch();
   restorecrtmode();
}

87. sprintf() 格式化输出函数
功能: 函数sprintf()用来作格式化的输出。
用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);
说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。
假如没有文本,图形也派不太多的用场。但是图形模式一旦设置,就无法进行常规文本显示。标号和文官信息只能用图形文本显示。图形文本显示与常规文本显示不同。例如,常规字符屏幕的位置其行列坐标表示已不再适用,这时单个字符可显示在屏幕上的任何位置。另外图形文本显示既可以水平显示,也可以垂直显示,字母大小也可以改变,同时可以提 供几种不同的字型。总之,常规文本显示简单轻易;图形文本显示复杂不易操作。所以,在C语言里提 供了几个函数来简化操作,控制图形文本显示。


二、图形文本设置
   常规文本模式显示相当于在纸上打字,而图形文本模式显示更接近于排版印刷。这种增强性能的要害是改变字体及字符大小。选择不同的水平位置文本排齐,甚至可以在垂直方向而不是水平方向显示文本。这些都要调用文本设置函数来实现。

88. settextstyle() 设置文本型式函数
功能: 函数settextstyle() 设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。
用法: 此函数调用方式为void settextstyle(int font,int direction,int charsize);
说明: 函数括号中,font为文本字体参数,direction为文本显示方向,charsize为字符大小参数。头部文件graphics中分别对它们进行了定义。表1-14所列为标准字体。

表1-14 图形文本标准字体
--------------------------------------------------------------------
      字体符号名            等价值         含     义
--------------------------------------------------------------------
   DEFAULT_FONT               0         8*8点阵字型(缺省字体)
   TRIPLEx_FONT                1         笔划式三倍字型(三倍字体)
   SMALL_FONT                  2         笔划式小字型(小字体)
   SANS_SERIF_FONT             3         笔划式字(Sanserif字体)
   GOTHIC_FONT                 4         笔划黑体字型(哥特体)
--------------------------------------------------------------------

   在设置字体之前,被选字体的.CHR文件必须装在initgraph()中指定的driverpath(驱动程序路径)目录或子目录里。
缺省时图形文本显示方向为水平方向,但可以设置图形文本显示方向为垂直方向(逆时针转90度)。表1-15给出了这两个图形文本显示方向。

表 1-15 图形文本显示方向
------------------------------------------------------------
   显示方向符号名       等价值         说         明
------------------------------------------------------------
   HORIZ_DIR               0        从左到右显示(水平方向)
   VERT_DIR                1        从底向上显示(垂直方向)
------------------------------------------------------------

在垂直显示时,文本字符串从底部向上显示,目前还没有现成的规定从上到下或从左到右的显示,但若需要也可设计。
对点阵字体,字符大小可以在0到10之间选择。对于笔划字体,charsize(字符大小参数)=0表示以缺省比例显示即4倍或由函数setusercharsize()设置的用户自定字符的比例放大显示。最大有效的charsize值为0。
   假如有错误参数值传给函数sette xtstyle(),graphresult()函数将给出值-11(表示一般图形错误),当前的文本型式保持不变。
   settextstyle()函数相应的头文件为graphics.h
返回值:无
例: 下面的程序中使用了settextstyle()函数,显示不同的文本字体和大小:
#include<graphics.h>
#include<conio.h>
void main()
{
   int driver,mode;
   mode=0;
   initgraph(&driver,&mode,"");
   outtext("Normal");
   settextstyle(GOTHIC_FONT,HORIZ_DIR,2);
   outtext("Gothic");
   settextstyle(TRIPLEx_FONT,HORIZ_DIR,2);
   outtext("Triplex");
   settextstyle(SANS_SERIF_FONT,HORIZ_DIR,7);
   outtext("Sans serif");
   getch();
   restorecrtmode();
}

89. settextjustify() 设置文本排齐函数
功能: 函数settextjustify() 设置水平方向和垂直方向的文本排齐方式。
用法: 该函数调用方式为void settextjustify(int horiz,int vert);
说明: 参数horiz,vert确定水平方向、垂直方向的文本排齐方式,其值如表1-16所示。

表 1-16 图形文本排列方式
---------------------------------------------------------------------------
   水平方向排齐         等价值         垂直方向排齐         等价值
      符号名                              符号名
---------------------------------------------------------------------------
   LEFT_TExT               0            BOTTOM_TExT            0
   CENTER_TExT             1            CENTER_TExT            1
   RIGHT_TExT              2            TOP_TExT               2
---------------------------------------------------------------------------

   对于水平方向排齐,若取LEFT_TExT,则文本左边不敢当前位置CP对齐,向右显示文本字符串。若取CENTER_TExT,则文本字符串的中心与当前位置CP对准显示,若取RIGHT_TExT,则文本右边与当前位置CP对齐,向左显示文本字符串。至于垂直方向排齐BOTTOM_TExT,是文本字符串的底线与当前位置CP对准。CENTER_TExT是文本字符串的中线与CP对上,TOP_TExT是文本字符串的顶线过CP,缺省值为水平方向文本排齐方式LEFT_TExT以及垂直方向文本排齐方式TOP_TExT。
   settextjustify()函数对应的头文件为graphics.h
例: 下面的程序语句使图形文本字符串靠右,即字符串右边紧靠当前位置排齐,并且其顶线过CP:
   settextjustify(RIGHT_TExT,TOP_TExT);


90. setusercharsize() 设置用户字符比例函数
功能: 函数setusercharsize() 可以让用户自定义笔划字体的字符比例,但对于缺省字体的字符无效,因为缺省字体是由硬件定义的8*8点阵字体。
用法:此函数调用方式为void setusercharsize(int xmul,int xdiv,int ymul,int ydiv);
说明: 参数xmul/xdiv为设置的字符宽度比例,参数ymul/ydiv为设置的字符高度比例。该函数调用后,屏幕上显示的字符宽为其缺省值8个像素乘以宽度比例,高为其缺省值8个像素乘以高度比例。注重,只有在调用settextstyle()函数设置参数charsize为0 时,字符调节参数才有效。若要显示高度比例为3,宽是高的2倍的字符,可以用下述方法调用函数setuserchrsize():
   xmul=6;xdiv=1;
   ymul=3;ydiv=1;
   setusercharsize(xmul,xdiv,ymul,ydiv);
   这里产生的字符为12个像素宽,48个像素高。
   setusercharsize()函数对应的头文件为graphics.h
返回值: 无
例: 显示大号字符文字:
#include<graphics.h>
void main()
{
   int driver,mode;
   driver=DETECT;
   mode=0;
   initgraph(&driver,&mode,"");
   settextstyle(TRIPLEx_FONT,HORIZ_DIR,0);
   setusercharsize(5,1,5,1);
   outtext("big");
   getch();
   restorecrtmode();
}

91. gettextsettings() 获取文本设置函数
功能: 函数gettextsettings() 将当前字体、显示方向、字符大小和水平垂直方向文本排齐方式等设置值填入textsettingstype型结构里,从而可从中获取文本信息。
用法: gettextsettings() 函数的调用方式为void gettextsettings(struct textsettingstype *info);
说明: 函数中textsettingdtype型结构在头部文件graphics.h中定义如下:
   strcut textsettingstype {
         int font;     // 字体
         int direction;    // 水平或垂直方向
         int charsize;     // 字符大小
         int horiz;        // 水平排齐方式
         int vert;         // 垂直排齐方式
      };
   结构中成员font的取值为下列各值之一:
         
         值            字体
      -------------------------------
         0            缺省字体
         1            三倍字体
         2            小字体
         3            SansSerif字体
         4            哥特体
      -------------------------------

      变量charsize的值是确定输出字符大小的系数,在0到10之间选取。
      direction方向变量可设置为水平显示HORIZ_DIR(缺省值),或设置为垂直显示VERT_DIR。horiz和vert为文本排齐方式变量,其值是下列中的一个:

      符号名               值         说        明
   ---------------------------------------------------------------
      LEFT_TExT            0         CP(当前位置在左边)
      CENTER_TExT          1         CP在中心
      RIGHT_TExT           2         CP在右边
      BOTTOM_TExT          3         CP在底部
      TOP_TExT             4         CP在顶部
   ---------------------------------------------------------------

      另见settextjustify()函数的说明部分。
      这个函数对应的头文件为graphics.h
返回值: 返回当前文本设置信息并装入info指向的结构里,然后便可以从该结构中获得文本设置各值。
例: 读入当前文本设置值。
   struct textsettingstype ts;
   gettextsettings(&ts);

92. textheight() 文本高度函数
功能: 函数textheight() 返回字符串的高度。
用法: 函数调用方式为int textheight(char *string);
说明: 参数string指向字符串.函数textheight()按当前字体、字符大小、比例因子和文本方向,计算出字符串高度的像素数。这可以是当前单字符的高度,也可以是当前整个字符串的高度值。
      此函数对应的头文件为graphics.h
返回值: 返回字符串高度像素数。
例: 显示数字字符的高度:
#include<graphics.h>
void main()
{
   int driver,mode;
   driver=0;
   mode=0;
   initgraph(&driver,&mode,"");
   printf(height: %d",textheight("8"));
   getch();
   restorecrtmode();
}

93. textwidth() 文本宽度函数
功能: 函数textwidth() 返回字符串的宽度。
用法: 此函数调用方式为int textwidth(char *string);
说明: 参数string指向字符串。函数textwidth()按当前字体、字符大小、比例因子和文本方向,计算出字符串宽度的像素数。这既可以是单字符的宽度,又可以是整个字符串的宽度,并且通常是整个字符串的宽度值。
      这个函数对应的头文件是graphics.h
返回值: 返回字符串宽度像素数。
例: 显示字符串hello的宽度:
#include<graphics.h>
void main()
{
   int driver,mode;
   driver=DETECT;
   mode=0;
   initgraph(&driver,&mode,"");
   printf("width: %d",textwidth("hello"));
   getch();
   restorecrtmode();
}

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058