这个函数用于获取当前文字颜色。
COLORREF gettextcolor();
参数:
(无)
返回值:
返回当前的文字颜色。
示例:
(无)
请参阅:
settextcolor gettextstyle settextstyle
这个函数用于在指定区域内以指定格式输出字符串。
int drawtext( LPCTSTR str, RECT* pRect, UINT uFormat );
int drawtext( TCHAR c, RECT* pRect, UINT uFormat );
参数:
str 待输出的字符串。 pRect 指定的矩形区域的指针。某些 uFormat 标志会使用这个矩形区域做返回值。详见后文说明。 uFormat 指定格式化输出文字的方法。详见后文说明。 c 待输出的字符。
返回值:
函数执行成功时,返回文字的高度。
如果指定了 DT_VCENTER 或 DT_BOTTOM 标志,返回值表示从 pRect->top 到输出文字的底部的偏移量。
如果函数执行失败,返回 0。
说明:
默认情况下,输出字符串的背景会用当前背景色填充。使用函数 setbkmode 可以设置文字的背景部分保持透明或使用背景色填充。
以下是 uFormat 参数可以使用的设置项,用来设置文字输出时的格式:
DT_BOTTOM | 调整文字位置到矩形底部,仅当和 DT_SINGLELINE 一起使用时有效。 |
DT_CALCRECT | 检测矩形的宽高。如果有多行文字,drawtext 使用 pRect 指定的宽度,并且扩展矩形的底部以容纳每一行文字。如果只有一行文字,drawtext 修改 pRect 的右边以容纳最后一个文字。无论哪种情况,drawtext 都返回格式化后的文字高度,并且不输出文字。 |
DT_CENTER | 文字水平居中。 |
DT_EDITCONTROL | 以单行编辑的方式复制可见文本。具体的说,就是以字符的平均宽度为计算依据,同时用这个方式应用于编辑控制,并且这种方式不显示可见部分的最后一行。 |
DT_END_ELLIPSIS | 对于文本显示,如果字符串的末字符不在矩形内,它会被截断并以省略号标识。
如果是一个单词而不是一个字符,其末尾超出了矩形范围,它不会被截断。 字符串不会被修改,除非指定了 DT_MODIFYSTRING 标志。 |
DT_EXPANDTABS | 展开 TAB 符号。 默认每个 TAB 占8个字符位置。注意,DT_WORD_ELLIPSIS、DT_PATH_ELLIPSIS 和 DT_END_ELLIPSIS 不能和 DT_EXPANDTABS 一起用。 |
DT_EXTERNALLEADING | 在行高里包含字体的行间距。通常情况下,行间距不被包含在正文的行高里。 |
DT_HIDEPREFIX | Windows 2000/XP: 忽略文字中的前缀字符(&),并且前缀字符后面的字符不会出现下划线。其他前缀字符仍会被处理。例如:
输入字符串: "A&bc&&d" 通常输出: "Abc&d" DTDT_HIDEPREFIX: "Abc&d" |
DT_INTERNAL | 使用系统字体计算文字的宽高等属性。 |
DT_LEFT | 文字左对齐。 |
DT_MODIFYSTRING | 修改指定字符串为显示出的正文。仅当和 DT_END_ELLIPSIS 或 DT_PATH_ELLIPSIS 标志同时使用时有效。 |
DT_NOCLIP | 使输出文字不受 pRect 裁剪限制。使用 DT_NOCLIP 会使 drawtext 执行稍快一些。 |
DT_NOFULLWIDTHCHARBREAK | Windows 2000/XP: 防止换行符插入到 DBCS (double-wide character string,即宽字符串),换行规则相当于 SBCS 字符串。仅当和 DT_WORDBREAK 一起使用时有效。例如,汉字就是宽字符,设置该标志后,连续的汉字会像英文单词一样不被换行符中断。 |
DT_NOPREFIX | 关闭前缀字符的处理。通常,DrawText 解释前缀转义符 & 为其后的字符加下划线,解释 && 为显示单个 &。指定
DT_NOPREFIX,这种处理被关闭。例如: 输入字符串: "A&bc&&d" 通常输出: "Abc&d" DT_NOPREFIX: "A&bc&&d" |
DT_PATH_ELLIPSIS | 对于显示的文字,用省略号替换字符串中间的字符以便容纳于矩形内。如果字符串包含反斜杠(\),DT_PATH_ELLIPSIS
尽可能的保留最后一个反斜杠后面的文字。 字符串不会被修改,除非指定了DT_MODIFYSTRING标志。 |
DT_PREFIXONLY | Windows 2000/XP:仅仅在(&)前缀字符的位置下绘制一个下划线。不绘制字符串中的任何其他字符。例如: 输入字符串: "A&bc&&d" 通常输出: "Abc&d" DT_PREFIXONLY: " _ " |
DT_RIGHT | 文字右对齐。 |
DT_RTLREADING | 设置从右向左的阅读顺序(当文字是希伯来文或阿拉伯文时)。默认的阅读顺序是从左向右。 |
DT_SINGLELINE | 使文字显示在一行。回车和换行符都无效。 |
DT_TABSTOP | 设置 TAB 制表位。uFormat 的 15–8 位指定 TAB 的字符宽度。默认 TAB 表示 8 个字符宽度。注意,DT_CALCRECT、DT_EXTERNALLEADING、DT_INTERNAL、DT_NOCLIP 和 DT_NOPREFIX 不能和 DT_TABSTOP 一起用。 |
DT_TOP | 文字顶部对齐。 |
DT_VCENTER | 文字垂直居中。仅当和 DT_SINGLELINE 一起使用时有效。 |
DT_WORDBREAK | 自动换行。当文字超过右边界时会自动换行(不拆开单词)。回车符同样可以换行。 |
DT_WORD_ELLIPSIS | 截去无法容纳的文字,并在末尾增加省略号。 |
示例:
以下范例在屏幕中央输出字符串“Hello World”:
#include <graphics.h> #include <conio.h> int main() { // 绘图环境初始化 initgraph(640, 480); // 在屏幕中央输出字符串 RECT r = {0, 0, 639, 479}; drawtext(_T("Hello World"), &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); // 按任意键退出 _getch(); closegraph(); }
这个函数用于获取当前字体样式。
void gettextstyle(LOGFONT *font);
参数:
font 指向 LOGFONT 结构体的指针。
返回值:
(无)
示例:
请参见 settextstyle 函数的示例。
这个函数用于在当前位置输出字符串。
void outtext(LPCTSTR str);
void outtext(TCHAR c);
参数:
str 待输出的字符串的指针。 c 待输出的字符。
返回值:
(无)
说明:
该函数会改变当前位置至字符串末尾。所以,可以连续使用该函数使输出的字符串保持连续。
示例:
// 输出字符串 char s[] = "Hello World"; outtext(s);
// 输出字符 char c = 'A'; outtext(c);
// 输出数值,先将数字格式化输出为字符串 char s[5]; sprintf(s, "%d", 1024); outtext(s);
这个函数用于在指定位置输出字符串。
void outtextxy( int x, int y, LPCTSTR str );
void outtextxy( int x, int y, TCHAR c );
参数:
x 字符串输出时头字母的 x 轴的坐标值 y 字符串输出时头字母的 y 轴的坐标值。 str 待输出的字符串的指针。 c 待输出的字符。
返回值:
(无)
说明:
该函数不会改变当前位置。
字符串常见的编码有两种:MBCS 和 Unicode。VC6 新建的项目默认为 MBCS 编码,VC2008 及高版本的 VC 默认为 Unicode 编码。LPCTSTR 可以同时适应两种编码。为了适应两种编码,请使用 TCHAR 字符串及相关函数。
默认情况下,输出字符串的背景会用当前背景色填充。使用函数 setbkmode 可以设置文字的背景部分保持透明或使用背景色填充。
示例:
// 输出字符串 (VC6) char s[] = "Hello World"; outtextxy(10, 20, s);
// 输出字符串 (VC6 / VC2008 / VC2010 / VC2012) TCHAR s[] = _T("Hello World"); outtextxy(10, 20, s);
// 输出字符 (VC6) char c = 'A'; outtextxy(10, 40, c);
// 输出字符 (VC6 / VC2008 / VC2010 / VC2012) TCHAR c = _T('A'); outtextxy(10, 40, c);
// 输出数值,先将数字格式化输出为字符串 (VC6) char s[5]; sprintf(s, "%d", 1024); outtextxy(10, 60, s);
// 输出数值 1024,先将数字格式化输出为字符串 (VC2008 / VC2010 / VC2012) TCHAR s[5]; _stprintf(s, _T("%d"), 1024); // 高版本 VC 推荐使用 _stprintf_s 函数 outtextxy(10, 60, s);
这个函数用于设置当前文字颜色。
void settextcolor(COLORREF color);
参数:
color
要设置的文字颜色。
返回值:
(无)
示例:
(无)
请参阅:
gettextcolor gettextstyle settextstyle
这个函数用于设置当前字体样式。
void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace );
void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut );
void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut, BYTE fbCharSet, BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily );
void settextstyle(const LOGFONT *font);
参数:
nHeight 指定高度(逻辑单位)。 nWidth 字符的平均宽度(逻辑单位)。如果为 0,则比例自适应。 lpszFace 字体名称。 nEscapement 字符串的书写角度,单位 0.1 度。 nOrientation 每个字符的书写角度,单位 0.1 度。 nWeight
字符的笔画粗细,范围 0~1000。0 表示默认粗细。使用数字或下表中定义的宏均可:
FW_DONTCARE | 0 |
FW_THIN | 100 |
FW_EXTRALIGHT | 200 |
FW_ULTRALIGHT | 200 |
FW_LIGHT | 300 |
FW_NORMAL | 400 |
FW_REGULAR | 400 |
FW_MEDIUM | 500 |
FW_SEMIBOLD | 600 |
FW_DEMIBOLD | 600 |
FW_BOLD | 700 |
FW_EXTRABOLD | 800 |
FW_ULTRABOLD | 800 |
FW_HEAVY | 900 |
FW_BLACK | 900 |
bItalic 是否斜体,true / false。 bUnderline 是否有下划线,true / false。 bStrikeOut 是否有删除线,true / false。 fbCharSet 指定字符集(详见 LOGFONT 结构体)。 fbOutPrecision 指定文字的输出精度(详见 LOGFONT 结构体)。 fbClipPrecision 指定文字的剪辑精度(详见 LOGFONT 结构体)。 fbQuality 指定文字的输出质量(详见 LOGFONT 结构体)。 fbPitchAndFamily 指定以常规方式描述字体的字体系列(详见 LOGFONT 结构体)。 font 指向 LOGFONT 结构体的指针。
返回值:
(无)
示例:
// 设置当前字体为高 16 像素的“宋体”。(VC6 / VC2008 / VC2010 / VC2012) settextstyle(16, 0, _T("宋体")); outtextxy(0, 0, _T("测试"));
// 设置输出效果为抗锯齿 (VC6 / VC2008 / VC2010 / VC2012) LOGFONT f; gettextstyle(&f); // 获取当前字体设置 f.lfHeight = 48; // 设置字体高度为 48 _tcscpy(f.lfFaceName, _T("黑体")); // 设置字体为“黑体”(高版本 VC 推荐使用 _tcscpy_s 函数) f.lfQuality = ANTIALIASED_QUALITY; // 设置输出效果为抗锯齿 settextstyle(&f); // 设置字体样式 outtextxy(0, 50, _T("抗锯齿效果"));
这个函数用于获取字符串实际占用的像素高度。
int textheight(LPCTSTR str);
int textheight(TCHAR c);
参数:
str 指定的字符串指针。 c 指定的字符。
返回值:
该字符串实际占用的像素高度。
示例:
(无)
这个函数用于获取字符串实际占用的像素宽度。
int textwidth(LPCTSTR str);
int textwidth(TCHAR c);
参数:
str 指定的字符串指针。 c 指定的字符。
返回值:
该字符串实际占用的像素宽度。
示例:
(无)
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!