资源描述:
《《VC字体文本输出》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章文本的输出与字体设置Windows经常使用GDI进行文本输出。在一定意义上,任何内容都可以看成图形实体图形和文本并没有明显的界限文本操作设置字体、字符颜色等有关属性将这些属性选入设备环境15.1设置文本的设备环境字体逻辑字体定义的字符集是设备无关的,它可以精确标度,因此得到广泛应用描述所要显示的文本的大小、类型和外形物理字体是为特殊设备设计的,因而是设备相关的Win系统提供了七种基本字体字体说明ANSI_FIXEDANSI标准的固定宽度的字体ANSI_VARANSI标准的可变宽度的字体DEFAULT_GUI当前G
2、UI的缺省字体OEM_FIXED由标准原设备制造商(OEM)提供DEVICE_DEFAULT当前图形设备的字体SYSTEM_FIXEDWindows的标准固定宽度的字体SYSTEMWindows提供的可变宽度的字体常作为缺省字体Win用它作为系统界面字体2(1)定义字体句柄变量:HFONThF;//hF为字体的句柄(2)调函数GetStockObject获得系统字体句柄它返回的是系统的缺省字体hF=GetStockObject():(3)调用函数SelectObject将字体选入设备环境SelectObject(hdc
3、,hF);选择系统字体的步骤35.1.2创建自定义字体若需要定义系统以外的字体,可以调用函数GreateFont自行创建HFont=CreateFont(intnHeight,//字体高度,0采用系统缺省值,使用逻辑单位intnWidth,//字体宽度,取0则由系统根据高宽比取最佳值intnEscapement,//每行文字相对于页底的角度,单位为0.1度intnOrienation,//每个文字相对于页底的角度,单位为0.1度DWORDnWeight,//字体粗细度,范围为0~1000DWORDDwltalic,//
4、如果要求字体倾斜,则取非零DWORDdwUnderline,//如果要求下划线,则取非零DWORDdwStrikeout,//如果要求中划线,则取非零DWORDdwCharset,//字体所属字符集DWORDdwOutputPrecision,//输出精度,一般取缺省值OUT_DEFAULT_PRECISDWORDdwClipPrecision,//剪裁精度,常取缺省值CLIP_DEFAULT_PRECISDWORDdwQuality,//输出质量,一般取缺省值DEFAULT_QUALITYDWORDdwPitchAn
5、dFamily,//字体间距LPCTSTRlpszFace//字体名)可选的系统字符集:ANSI_CHARSETOEM_CHARSETSYMBOL_CHARSETDEFAULT_CHARSETSHIFTJIS_CHARSET45.1.3设置字体和背景颜色设置字体颜色:SetTextColor(hdc,crColor);设置背景颜色:SetBkColor(hdc,crColor);crColor为设置的颜色字体及背景颜色的设置在开发过程中非常重要55.2文本的输出过程确定后续文本坐标确定换行时文本坐标文本输出过程获取字体
6、信息格式化文本调用函数输出文本6获取字体信息输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置GetTextMetrics(hdc,&tm);//tm为TEXTMETRICS结构获取当前使用字体信息调用该函数时,系统将当前字体的信息拷贝到tm标识的TEXTMETRICS结构中7系统定义的TEXTMETRICS的结构如下:typedefstructtagTEXTMETRIC{//tmLONGtmHeight;//字符高度LONGtmAscent;//字符基线以上高度LONGtmDescent;/
7、/字符基线以下高度LONGtmInternalLeading;//tmHeight制订的字符高度顶部的控件LONGtmExternalLeading;//行与行之间的间隔LONGtmAveCharWidth;//平均字符宽度LONGtmMaxCharWidth;//最大字符宽度LONGtmWeight;//字符的粗细度LONGtmOverhang;//合成字体间附加的宽度LONGtmDigitizedAspectX;//为输出设备设计的X轴尺寸LONGtmDigitizedAspectY;//为输出设备设计的Y轴尺寸B
8、CHARtmFirstChar;//字体中第一个字符值BCHARtmLastChar;//字体中最后一个字符值BCHARtmDefaultChar;//代替不在字体中字符的字符BCHARtmBreakChar;//作为分割符的字符BYTEtmItalic;//非0则表示字体为斜体BYTEtmUnderlined;//非0则表示字体