Visual_C++面向对象与可视化程序设计_windows_API_text_font.pptVIP

Visual_C++面向对象与可视化程序设计_windows_API_text_font.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Visual C++面向对象与可视化程序设计 --------WINDOWS API 编程之 text and font 在内定的DC中选择的字体称为系统字体,能够由GetStockObject的SYSTEM_FONT参数识别。这是固定的ANSI字符集字体。在GetStockObject中指定SYSTEM_FIXED_FONT,可以获得等宽字体的句柄。在希望所有的字体都具有相同宽度时,这是很方便的。 备用字体OEM_FIXED_FONT也称为终端机字体,是Windows在MS-DOS命令提示窗口中使用的字体,它包括与原始IBM-PC扩展字符集兼容的字符集。Windows在窗口标题列、菜单和对话框的文字中使用DEFULT_GUI_FONT。 当将新字体选入DC时,必须使用GetTextMetrics计算字符的高度和平均宽度。如果选择了固定字体,那么一定要注意,字符的平均宽度只是个平均值,某些字符会比它宽或比它窄。 字体型态 Windows支持两大类字体,即所谓的「GDI字体」和「设备字体」。GDI字体储存在硬盘的文件中,而设备字体是输出设备本来就有的。GDI字体有三种样式:点阵字体,笔划字体和TrueType字体。 点阵字体的每个字符都以位图像素图案的形式储存,每种点阵字体都有特定的纵横比和字符大小。Windows通过简单地复制图素的行或列就可以由GDI点阵字体产生更大的字符。点阵字体的主要优点是显示性能(显示速度很快)和可读性(因为是手工设计的,所以尽可能清晰)。 笔划字体是以「连结点」的方式定义的一系列线段,笔划字体可以连续地缩放,这意味着同样的字体可以用于具有任何分辨率的图形输出设备,并且字体可以放大或缩小到任意尺寸。不过,它的性能不好,小字体的可读性也很糟,而大字体由于笔划是单根直线而显得很单薄。笔划字体有时也称为绘图机字体,因为它们特别适合于绘图机,但是不适合于别的场合。 TrueType字体的单个字符是通过填充的直线和曲线的轮廓来定义的。Windows可以通过改变定义轮廓的坐标对TrueType字体进行缩放。当程序开始使用特定大小的TrueType字体时,Windows「点阵化」字体。这就是说Windows使用TrueType字体文件中包括的「提示」对每个字符的连结直线和曲线的坐标进行缩放。这些提示可以补偿误差,避免合成的字符变得很难看。然后,每个字符的合成轮廓用于建立字符的位图,这些位图储存在内存以备将来使用。 逻辑字体 逻辑字体是一个GDI对象,它的句柄储存在HFONT型态的变量中,逻辑字体是字体的描述。和逻辑画笔及逻辑画刷一样,它是抽象的对象,只有当应用程序调用SelectObject将它选入DC时,它才成为真实的对象。 逻辑字体的建立和选择:可以透过调用CreateFont或CreateFontIndirect来建立逻辑字体。CreateFontIndirect函数接受一个指向LOGFONT结构的指针,该结构有14个字段。CreateFont函数接受14个参数,它们与LOGFONT结构的14个字段形式相同。它们是仅有的两个建立逻辑字体的函数。因为很难记住14个字段,所以很少使用CreateFont。 ifHeight ,如果为正,就是设置单元高度;如果为负,就是设置字符高度。 ifEScapement使字符串能够以一定的角度书写(但每个字符的基准线仍与水平轴平行),而ifOrientation使单个字符倾斜。要注意单位是十分之一度,逆时针方向旋转。它很容易输入一个值使范例字符串消失!因此,请使用0到-600或3000到3600之间的值。 lfWeight这个字段能够指定粗体。WINGDI.H表头文件定义了可用于这个字段的一组值.可以对标准字使用0或400,对粗体使用700。 注意lfCharSet字段是唯一不用零表示默认值的字段。零值相当于ANSI_CHARSET,ANSI字符在美国和西欧使用。DEFAULT_CHARSET代码等于1,表示程序执行的机器上内定的字符集。 ifFaceName这是关于字样的实际文字名称。这个字段是宽度为LF_FACESIZE(或32个字符)的字节数组。如果要得到TrueType的斜体或粗体字体,有两种方法。在lfFaceName字段中使用完整的字体名称(如Times New Roman Italic),或者可以使用基本名称(即Times New Roman),并设定lfItalic字段。 例: lf.lfFaceName = “黑体” 逻辑字体结构 可以调用CreateFont来建立逻辑字体,它是具有14个参数的函数。一般,定义一个LOGFONT型态的结构LOGFONT lf ; 然后再定义该结构的字段会更容易一些。完成后,可以使

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档