📄 编程天地--c语言--c语言图形编程(四、图形文本-01).htm
字号:
x,int y,char
*string);<BR>说明: 参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。调用此函数不影响当前光标位置,当然光标是不可见的。<BR>
该函数也要用当前绘图色、字体、字符大小、文本显示方向和水平垂直两个方向的文本排齐方式。<BR>
outtextxy()的对应头文件是graphics.h<BR>返回值: 无<BR>例: 下面的程序中调用了outtext()和outtextxy()两个函数:<BR>#include<graphics.h><BR>void
main()<BR>{<BR> int driver,mode;<BR> int
i;<BR> driver=DETECT;<BR>
mode=0;<BR>
initgraph(&driver,&mode,);<BR> outtext(This is
an example);<BR> outtext(another line);<BR>
for(i=100;i<200;i+=8)<BR>
outtextxy(200,i,hello);<BR> getch();<BR>
restorecrtmode();<BR>}<BR><BR><FONT color=#0000ff>87. sprintf()
格式化输出函数</FONT><BR>功能: 函数sprintf()用来作格式化的输出。<BR>用法: 此函数调用方式为int
sprintf(char *string,char
*format,arg_list);<BR>说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。<BR>如果没有文本,图形也派不太多的用场。但是图形模式一旦设置,就无法进行常规文本显示。标号和文官信息只能用图形文本显示。图形文本显示与常规文本显示不同。例如,常规字符屏幕的位置其行列坐标表示已不再适用,这时单个字符可显示在屏幕上的任何位置。另外图形文本显示既可以水平显示,也可以垂直显示,字母大小也可以改变,同时可以提
供几种不同的字型。总之,常规文本显示简单容易;图形文本显示复杂不易操作。所以,在C语言里提
供了几个函数来简化操作,控制图形文本显示。<BR><BR><BR><FONT
color=#0000ff>二、图形文本设置</FONT><BR>
常规文本模式显示相当于在纸上打字,而图形文本模式显示更接近于排版印刷。这种增强性能的关键是改变字体及字符大小。选择不同的水平位置文本排齐,甚至可以在垂直方向而不是水平方向显示文本。这些都要调用文本设置函数来实现。<BR><BR><FONT
color=#0000ff>88. settextstyle()
设置文本型式函数</FONT><BR>功能: 函数settextstyle()
设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。<BR>用法: 此函数调用方式为void
settextstyle(int font,int direction,int
charsize);<BR>说明: 函数括号中,font为文本字体参数,direction为文本显示方向,charsize为字符大小参数。头部文件graphics中分别对它们进行了定义。表1-14所列为标准字体。<BR><BR>表1-14 图形文本标准字体<BR>--------------------------------------------------------------------<BR>
字体符号名
等价值
含 义<BR>--------------------------------------------------------------------<BR>
DEFAULT_FONT 0 8*8点阵字型(缺省字体)<BR>
TRIPLEx_FONT
1 笔划式三倍字型(三倍字体)<BR>
SMALL_FONT 2 笔划式小字型(小字体)<BR>
SANS_SERIF_FONT
3 笔划式字(Sanserif字体)<BR>
GOTHIC_FONT 4
笔划黑体字型(哥特体)<BR>--------------------------------------------------------------------<BR><BR>
在设置字体之前,被选字体的.CHR文件必须装在initgraph()中指定的driverpath(驱动程序路径)目录或子目录里。<BR>缺省时图形文本显示方向为水平方向,但可以设置图形文本显示方向为垂直方向(逆时针转90度)。表1-15给出了这两个图形文本显示方向。<BR><BR>表
1-15
图形文本显示方向<BR>------------------------------------------------------------<BR>
显示方向符号名
等价值
说
明<BR>------------------------------------------------------------<BR>
HORIZ_DIR
0
从左到右显示(水平方向)<BR>
VERT_DIR
1 从底向上显示(垂直方向)<BR>------------------------------------------------------------<BR><BR>在垂直显示时,文本字符串从底部向上显示,目前还没有现成的规定从上到下或从左到右的显示,但若需要也可设计。<BR>对点阵字体,字符大小可以在0到10之间选择。对于笔划字体,charsize(字符大小参数)=0表示以缺省比例显示即4倍或由函数setusercharsize()设置的用户自定字符的比例放大显示。最大有效的charsize值为0。<BR>
如果有错误参数值传给函数settextstyle(),graphresult()函数将给出值-11(表示一般图形错误),当前的文本型式保持不变。<BR>
settextstyle()函数相应的头文件为graphics.h<BR>返回值:无<BR>例:
下面的程序中使用了settextstyle()函数,显示不同的文本字体和大小:<BR>#include<graphics.h><BR>#include<conio.h><BR>void
main()<BR>{<BR> int driver,mode;<BR>
mode=0;<BR>
initgraph(&driver,&mode,);<BR>
outtext(Normal);<BR>
settextstyle(GOTHIC_FONT,HORIZ_DIR,2);<BR>
outtext(Gothic);<BR>
settextstyle(TRIPLEx_FONT,HORIZ_DIR,2);<BR>
outtext(Triplex);<BR>
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,7);<BR>
outtext(Sans serif);<BR> getch();<BR>
restorecrtmode();<BR>}<BR><BR><FONT color=#0000ff>89.
settextjustify() 设置文本排齐函数</FONT><BR>功能: 函数settextjustify()
设置水平方向和垂直方向的文本排齐方式。<BR>用法: 该函数调用方式为void settextjustify(int horiz,int
vert);<BR>说明: 参数horiz,vert确定水平方向、垂直方向的文本排齐方式,其值如表1-16所示。<BR><BR>表
1-16
图形文本排列方式<BR>---------------------------------------------------------------------------<BR>
水平方向排齐 等价值 垂直方向排齐 等价值<BR>
符号名
符号名<BR>---------------------------------------------------------------------------<BR>
LEFT_TExT 0
BOTTOM_TExT 0<BR>
CENTER_TExT
1
CENTER_TExT 1<BR>
RIGHT_TExT 2
TOP_TExT
2<BR>---------------------------------------------------------------------------<BR><BR>
对于水平方向排齐,若取LEFT_TExT,则文本左边不敢当前位置CP对齐,向右显示文本字符串。若取CENTER_TExT,则文本字符串的中心与当前位置CP对准显示,若取RIGHT_TExT,则文本右边与当前位置CP对齐,向左显示文本字符串。至于垂直方向排齐BOTTOM_TExT,是文本字符串的底线与当前位置CP对准。CENTER_TExT是文本字符串的中线与CP对上,TOP_TExT是文本字符串的顶线过CP,缺省值为水平方向文本排齐方式LEFT_TExT以及垂直方向文本排齐方式TOP_TExT。<BR>
settextjustify()函数对应的头文件为graphics.h<BR>例:
下面的程序语句使图形文本字符串靠右,即字符串右边紧靠当前位置排齐,并且其顶线过CP:<BR>
settextjustify(RIGHT_TExT,TOP_TExT);<BR><BR><BR><FONT
color=#0000ff>90. setusercharsize() 设置用户字符比例函数<BR></FONT>功能:
函数setusercharsize()
可以让用户自定义笔划字体的字符比例,但对于缺省字体的字符无效,因为缺省字体是由硬件定义的8*8点阵字体。<BR>用法:此函数调用方式为void
setusercharsize(int xmul,int xdiv,int ymul,int ydiv);<BR>说明:
参数xmul/xdiv为设置的字符宽度比例,参数ymul/ydiv为设置的字符高度比例。该函数调用后,屏幕上显示的字符宽为其缺省值8个像素乘以宽度比例,高为其缺省值8个像素乘以高度比例。注意,只有在调用settextstyle()函数设置参数charsize为0
时,字符调节参数才有效。若要显示高度比例为3,宽是高的2倍的字符,可以用下述方法调用函数setuserchrsize():<BR>
xmul=6;xdiv=1;<BR> ymul=3;ydiv=1;<BR>
setusercharsize(xmul,xdiv,ymul,ydiv);<BR>
这里产生的字符为12个像素宽,48个像素高。<BR>
setusercharsize()函数对应的头文件为graphics.h<BR>返回值: 无<BR>例:
显示大号字符文字:<BR>#include<graphics.h><BR>void
main()<BR>{<BR> int driver,mode;<BR>
driver=DETECT;<BR> mode=0;<BR>
initgraph(&driver,&mode,);<BR>
settextstyle(TRIPLEx_FONT,HORIZ_DIR,0);<BR>
setusercharsize(5,1,5,1);<BR>
outtext(big);<BR> getch();<BR>
restorecrtmode();<BR>}<BR><BR><FONT color=#0000ff>91.
gettextsettings() 获取文本设置函数</FONT><BR>功能: 函数gettextsettings()
将当前字体、显示方向、字符大小和水平垂直方向文本排齐方式等设置值填入textsettingstype型结构里,从而可从中获取文本信息。<BR>用法:
gettextsettings() 函数的调用方式为void gettextsettings(struct
textsettingstype *info);<BR>说明:
函数中textsettingdtype型结构在头部文件graphics.h中定义如下:<BR> strcut
textsettingstype
{<BR> int
font; //
字体<BR> int
direction; //
水平或垂直方向<BR> int
charsize; //
字符大小<BR> int
horiz; //
水平排齐方式<BR> int
vert; //
垂直排齐方式<BR> };<BR>
结构中成员font的取值为下列各值之一:<BR> <BR>
值
字体<BR>
-------------------------------<BR>
0 缺省字体<BR>
1 三倍字体<BR>
2 小字体<BR>
3 SansSerif字体<BR>
4 哥特体<BR>
-------------------------------<BR><BR>
变量charsize的值是确定输出字符大小的系数,在0到10之间选取。<BR>
direction方向变量可设置为水平显示HORIZ_DIR(缺省值),或设置为垂直显示VERT_DIR。horiz和vert为文本排齐方式变量,其值是下列中的一个:<BR><BR>
符号名
值
说 明<BR>
---------------------------------------------------------------<BR>
LEFT_TExT 0 CP(当前位置在左边)<BR>
CENTER_TExT
1 CP在中心<BR>
RIGHT_TExT 2 CP在右边<BR>
BOTTOM_TExT
3 CP在底部<BR>
TOP_TExT
4
CP在顶部<BR>
---------------------------------------------------------------<BR><BR>
另见settextjustify()函数的说明部分。<BR>
这个函数对应的头文件为graphics.h<BR>返回值:
返回当前文本设置信息并装入info指向的结构里,然后便可以从该结构中获得文本设置各值。<BR>例:
读入当前文本设置值。<BR> struct textsettingstype
ts;<BR> gettextsettings(&ts);<BR><BR><FONT
color=#0000ff>92. textheight() 文本高度函数<BR></FONT>功能: 函数textheight()
返回字符串的高度。<BR>用法: 函数调用方式为int textheight(char *string);<BR>说明:
参数string指向字符串.函数textheight()按当前字体、字符大小、比例因子和文本方向,计算出字符串高度的像素数。这可以是当前单字符的高度,也可以是当前整个字符串的高度值。<BR>
此函数对应的头文件为graphics.h<BR>返回值: 返回字符串高度像素数。<BR>例:
显示数字字符的高度:<BR>#include<graphics.h><BR>void
main()<BR>{<BR> int driver,mode;<BR>
driver=0;<BR> mode=0;<BR>
initgraph(&driver,&mode,);<BR> printf(height:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -