资源描述:
《黄维通VC++学习笔记之文本与字体.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、黄维通VC++学习笔记之文本与字体1.文本操作:先要获得文本句柄、设置字体、字符大小、字符颜色等有关属性、将这些属性选入设备环境2.字体句柄(1)定义字体句柄变量:HFONThF;//hF为字体的句柄(2)调函数GetStockObject获得系统字体句柄它返回的是系统的默认字体hF=GetStockObject():(3)调用函数SelectObject将字体选入设备环境SelectObject(hdc,hF);3.创建自定义字体若需要定义系统以外的字体,可以调用函数GreateFont自行创建HFont=CreateFont(intnHeight
2、,//字体高度,0采用系统默认值,使用逻辑单位intnWidth,//字体宽度,取0则由系统根据高宽比取最佳值intnEscapement,//每行文字相对于页底的角度,单位为0.1度intnOrienation,//每个文字相对于页底的角度,单位为0.1度DWORDnWeight,//字体粗细度,范围为0~1000DWORDDwltalic,//如果要求字体倾斜,则取非零DWORDdwUnderline,//如果要求下划线,则取非零DWORDdwStrikeout,//如果要求中划线,则取非零DWORDdwCharset,//字体所属字符集DWOR
3、DdwOutputPrecision,//输出精度,一般取默认值OUT_DEFAULT_PRECISDWORDdwClipPrecision,//剪裁精度,常取默认值CLIP_DEFAULT_PRECISDWORDdwQuality,//输出质量,一般取默认值DEFAULT_QUALITYDWORDdwPitchAndFamily,//字体名)4.设置字体和背景颜色设置字体颜色:SetTextColor(hdc,crColor);设置背景颜色:SetBkColor(hdc,crColor);5.文本的输出过程获取字体信息、格式化文本(确定后续文本坐标
4、、确定换行时文本坐标)、调用函数输出文本6.输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置GetTextMetrics(hdc,&tm);//tm为TEXTMETRICS结构调用该函数时,系统将当前字体的信息拷贝到tm标识的TEXTMETRICS结构中7.系统定义的TEXTMETRICS的结构如下:typedefstructtagTEXTMETRIC{//tmLONGtmHeight;//字符高度LONGtmAscent;//字符基线以上高度LONGtmDescent;//字符基线以下高度LONGtmInternalLe
5、ading;//tmHeight制订的字符高度顶部的控件LONGtmExternalLeading;//行与行之间的间隔LONGtmAveCharWidth;//平均字符宽度LONGtmMaxCharWidth;//最大字符宽度LONGtmWeight;//字符的粗细度LONGtmOverhang;//合成字体间附加的宽度LONGtmDigitizedAspectX;//为输出设备设计的X轴尺寸LONGtmDigitizedAspectY;//为输出设备设计的Y轴尺寸BCHARtmFirstChar;//字体中第一个字符值BCHARtmLastCha
6、r;//字体中最后一个字符值BCHARtmDefaultChar;//代替不在字体中字符的字符BCHARtmBreakChar;//作为分割符的字符BYTEtmItalic;//非0则表示字体为斜体BYTEtmUnderlined;//非0则表示字体有下划线BYTEtmStruckOut;//非0则表示字符为删除字体BYTEtmPitchAndFamily;//字体间距和字体族BYTEtmCharSet;//字符集}TEXTMETRIC7.格式化文本需要格式化处理的情况:在文本行中确定后续文本的坐标、换行时确定下一行文本的坐标确定后续文本的坐标,应先
7、获取当前的字符串的宽度,该工作由GetTextExtentPoint32函数完成,并把它存储于一个SIZE结构中。BooLGetTextExtentPoint32(HDChdc,LPCTSTRlpszString,//指定的字符串intnLength,//字符串中的字符数LPSIZElpSize//返回字符串宽度及高度的SIZE数据结构的地址)确定换行时文本坐标通过计算当前行文本字符的高度与行间隔之和,即可得到换行时文本的起始坐标:字符的高度与行间隔均存储在tm指向的TEXTMETRICS结构中,换行时Y轴上文本的起始坐标cy为:cy=tm.tmHe
8、ight+tm.tmExternalLeading;文本输出:常用的文本输出函数TextOut原型如下:BO