我喜欢蓝天,也喜欢雨天。
分类: Windows平台
2013-08-27 16:13:16
基本概念:
1.系统字体:在默认的设备描述表中选定的字体为系统字体。
2.GDI字体:存储在硬盘的文件中,分三种类型:点阵字体(位图字体),笔划字体(绘图仪字体),TrueType字体;设备字体是输出设备所固有的。
3.逻辑英寸和实际英寸
逻辑英寸:96或120像素在屏幕上占有的度量距离,逻辑英寸比实际英寸大一些,逻辑英寸有效的对屏幕进行了放大。
4.逻辑字体:是一个GDI对象,句柄存储在HFONT类型变量中,逻辑字体是字体的描述。只有当应用程序调用SelectObject将它选入设备描述表时,它才成为真实的对象。
字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。Unicode字符集为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
dpi是指每英寸的像素。
文本输出函数:
TextOut(hdc, xStart, yStart, pString, iCount);仅可输出单行文字
TabbedTextOut(hdc, xStart, yStart, pString, iCount, iNumTabs, pTabStops, xTabOrigin);该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。
ExtTextOut();
DrawText();DrawText可用于多行输出,计算即将输出的位置等,考虑Tab字符等
DraeTextEx();
SetTextColor(hdc, rgbColor);在默认的设备描述表下,文本颜色是黑色,可用此函数更改.
GetTextColor();获取当前文本的颜色.
SetBkMode(hdc, iMode);更改背景模式。
SetBkColor(hdc, rgbColor);更改背景颜色。
使用当前系统颜色设置文本色和背景色.
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
SetBkColor(hdc, GetSysColor(COLOR_WINDOW);
SetTextCharacterExtra(hdc, iExtra);设置字符间距,用此函数插入空间. iExtra是逻辑单位,windows将其转换为最接近的像素.
GetTextCharacterExtra();回去当前的字符间距。
hFont = GetStockObject(iFont);获取某种备用字体句柄。
SelectObject(hdc, hFont));将该字体选入设备描述表。
SelectObject(hdc, GetStockObject(iFont));一步完成。
GetTextMetrics();计算字符的高度和平均宽度。
创建逻辑字体:
CreateFont();少用
CreateFontIndirect();
GetTextFace(hdc,sizeof(szFaceName)/sizeof(TCHAR),szFaceName);使程序能够确定当前选入设备描述表的字体名.
GetTextMetrics(hdc, &textmetric);得到详细的字体信息。
LONGFONT 用于定义逻辑字体。
TEXTMETRIC 用于获取当前选入设备描述表中的字体信息。
EnumFontFamilies(hdc, szFaceName, EnumProc, pData);列举TrueType字体的函数。
EnumFontFamiliesEx(hdc, &logfont, EnumProc, pData,dwFlags);
ChooseFomt();得到指向CHOOSEFONT结构的指针以此作为它的唯一参数,并显示列出所有字体的对话框。
GetTextExtentPoint32(hdc,pString, iCount, &size);根据设备描述表中选入的当前字体得出字符串的宽度和高度。