当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第3章 文本与字体 > 3-2 文本的输出过程 > 3-2 文本的输出过程
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
下面我们介绍文本的输出过程
文本输出过程,包含这么几个步骤
首先,我们要获取字体的信息
然后,要对文本进行格式化
所谓格式化,就是确定后续文本的坐标
和确定换行时候文本的坐标
然后调用函数输出文本
首先我们说获取字体信息
输出文本之前我们是需要知道
字符的高度、宽度以及下一行的字符位置
否则的话, 这些文字弄不好就会重叠在一起
或者这个行与行之间差距非常大
引起视觉效果的不适
所以的话,输出文本之前
我们一定要获取字体的信息
获取当前字体信息
我们就用GetTextMetrics这个函数
那么这里面,有一个tm
tm是什么呢?
tm是TEXTMETRIC结构的一个变量
实际上是代表了一个文本的对象信息
调用这个GetTextMetrics这个函数的时候
系统将当前字体的信息会拷贝到
tm标识的TEXTMETRIC结构中
那也就是说系统自动填写了TEXTMETRIC数据结构
这里,把这个数据结构给大家列出来
大家简单地看一下
这里的参数,我简要地说明一下
比如说这里是字符的高度
字符基线的高度
基线以下的高度等等等等
那么这些的话,就是说
系统会给你去识别
很重要的一个就是它所处的字符集
那么这个字符集这个地方
如果使用不同的字符集
它输出的效果是有差别的
那么在格式化文本过程中
我们需要格式化处理什么东西
主要的就是在文本行中确定后续文本的坐标
以及换行时下一行文本的坐标
确定后续文本的坐标
应先获取当前字符串的宽度
这工作由GetTextExtentPoint32这个函数来完成
把结果存储在一个SIZE这个结构中
实际上它就是一个X、Y的坐标
那么它的返回值是
返回字符串的宽度及高度的SIZE的这个地址
例如我们说,X轴起始坐标如果是cx0的话
那么后续文本坐标,就是cx1
是原来X轴起始坐标加上size.cx
我们这样就可以确定后续文本的坐标
我们需要换行的时候
是需要确定换行时文本的坐标
这时候Y坐标是要变化的
把当前的字符高度和行间隔之和算起来
就可以得到换行时文本的起始坐标
那么字符的高度与行间隔也存储在
tm指向的TEXTMETRIC结构中
那么换行时,Y轴上文本的起始坐标
比如说为cy的话
那么cy就是tm.Height
这个Height就是原来字符的高度
然后,这个第二个参数就是字符的行间隔
那么这两个加和就是下一行的字符的Y轴的坐标起始位置
文本输出,常用的用TextOut这个函数
TextOut就是在当前的DC里面
根据X、Y这个坐标
这个X、Y坐标实际上是用户区中字符串的起始坐标
在这个起始坐标的开始位置
输出要显示的字符串
我们还要知道这个字符串中需要输出的字节数
也就是说如果字符串有100个字节
当你只需要输出30个字节的时候
那么你给它一个字节数的标识的话
那么超过这个标识的字符串内容是不会被输出的
TextOut是以坐标X、Y为起点
输出字节数为nCount 名为Ipstring中的字符串
-讨论实录
--0-0
-1-1 Windows应用程序的特点
--1-1
-1-2 可视化编程
--1-2
-1-3 关于API
--1-3-1
--1-3-2
-1-4 Windows应用程序组成及编程步骤
--1-4-1
--1-4-2
-1-5 应用程序举例
--1-5-1
--1-5-2
--1-5-3
-02-1 Windows图形设备接口
-02-2 绘图工具与颜色
-02-3 常用绘图函数
-02-4 例题和作业
-第2章源代码
--外部链接
--外部链接
-3-1 设置文本的设备环境
-3-2 文本的输出过程
-3-3 例题和作业
-第3章源代码
--外部链接
-4-1 Windows 应用程序中的键盘与鼠标
--4-1
-4-2 键盘的操作应用举例
--4-2
-4-3 例题
--4-3
-4-3 鼠标在应用程序中的应用
--4-3
-4-4 例题4-4
--4-4
-第4章源代码
--外部链接
-5-1 菜单和加速键资源及其应用
--5-1
-5-1(例1)
--5-1(例1)
-5-2 位图资源及其应用
--5-2
-5-3 对话框资源及其应用
--5-3-1
--5-3-2
-5-4 图标资源的应用
--5-4
-第5章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业