网站大量收购独家精品文档,联系QQ:2885784924

vc2第5章 文本与字体.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vc2第5章 文本与字体

第5章 文本与字体 Huang Weitong 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年10月 第五章 文本与字体 内容提要 设置文本的设备环境 文本的输出过程 文本操作实例 §5.1. 设置文本的设备环境 1. 有关的基本概念 Windows中所显示的任何内容,在一定意义上,都可看成借助GDI绘制图形实体。 文本输出使用预定义好的特殊图形元素——字体集。 字体描述了所要显示的文本文字的大小、类型和外形。 Windows 系统提供了七种基本字体,并允许用户创建新的字体。 1. 有关的基本概念(续) 文本操作的要点: 获得文本句柄; 设置字体、字符大小、字符颜色等属性; 将这些属性选入设备环境; 2. Windows提供的七种基本字体 ANSI_FIXED ANSI标准的固定宽度的字体 ANSI_VAR ANSI标准的可变宽度的字体 DEFAULT_GUI 当前GUI的缺省字体 OEM_FIXED 由标准原设备制造商(OEM)提供 DEVICE_DEFAULT 当前图形设备的字体 SYSTEM_FIXED Windows的标准固定宽度的字体 SYSTEM Windows提供的可变宽度的字体 3. 选择系统字体的步骤 (1) 定义字体句柄变量: HFONT hF; //hF为字体的句柄 (2) 调函数GetStockObject获得系统字体句柄,它返回的是系统的缺省字体 hF= GetStockObject( ); (3) 调函数SelectObject将字体选入设备环境 SelectObject(hdc,hF); 4.创建自定义字体 调用函数CreateFont可创建自定义字体。 4.创建自定义字体(续) 设置字体和背景颜色 设置字体颜色函数: SetTextColor(hdc,crColor); 设置背景颜色函数: SetBkColor(hdc,crColor); 1. 文本的输出步骤 获取字体信息 格式化文本 确定后续文本坐标 确定换行时文本坐标 调用函数输出文本 2. 获取字体信息 输出文本之前,必须获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置。 调用GetTextMetrics()获取字体的信息 GetTextMetrics (hdc,tm); tm为TEXTMETRICS结构存放字体的信息 3. 格式化文本 确定后续文本坐标,由GetTextExtentPoint32函数获取当前的字符串的宽度,并存于SIZE。 2. 格式化文本(续) 确定换行时文本坐标 在tm指向的TEXTMETRICS结构中,存有: 字符高度tmHeight 行间隔tmExternalLeading 。 换行时,新一行文本的y坐标的增量值为: cy=tm.tmHeight+tm.tmExternalLeading; 3. 文本输出 常用的文本输出函数TextOut,原型如下: BOOL TextOut ( HDC hdc, int X, int Y, //字符串的起始坐标 LPCTSTR lpstring, //被显示的字符串 int nCount //字符串的字节数 ); 第5章课后练习题 编写一程序,在某一个窗口上显示一行文字,如“祝您成功!”。在窗口中,这一行文字从左向右滚动显示,而且每显示一轮,改变一次颜色和字体,一个周期为5种颜色,分别为红、紫、蓝、绿、黄,5种字体分别为宋体、楷体、仿宋体、黑体、隶书。 [注]10月29日前完成 提示1:改变坐标值实现字符串滚动 向左滚动(见P51习题5-6的题解) Textout(hdc,x,tlpsz-1[iFontFlag%ncharlen], ncharlen- iFontFlag%ncharlen); iFontFlag+=2; 向下一行 Y+=(i%12)*(tm.tmHeight+tm.tmExternalLeading); TextOut(hDC,X,Y,lpsz_1,nCharlen); //输出. i++; //计下移次数 提示1:改变坐标值实现字符串滚动 向右滚动 X+=(i%40)*(tm.tmAveCharWidth+tm.tmOverhang); TextOut(hDC,X,Y,lpsz_

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档