鱼C论坛

 找回密码
 立即注册
查看: 2095|回复: 1

[已解决]SDK 编程中的垂直居中问题

[复制链接]
发表于 2019-1-5 14:49:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
SDK 011讲:获取窗口的各种尺寸 课后作业动动手01题



小甲鱼解答:
答:这道题可能让大家多思考的地方主要是要求二,要做到“绝对居中”,就需要考虑到默认基准点的位置。

例如默认情况下,我们在 (0, 0) 的位置上打印文字,文字会显示在页面左上角,是因为基准点此时在文字的左上角(比较难用文字形容,自己意会一下)。

因此,我们这里需要减去一行文字的高度才能得到真正的垂直居中:(cyClient - cyChar) / 2



其中,cyClient为WM_SIZE消息中的HIWORD宏也就是窗口改变以后的宽度,cyChar是TEXTMETRIC结构体的tmHeight、tmExternalLeading的和也就是一行字的高度
不懂就问:为什么窗口高度 减去 这一行字的高度,得到的差再除以2才是 垂直居中呢!?(为什么不是直接 窗口高度 除以2)

最佳答案
2019-1-5 15:14:58
个人理解:因为基准点是限定矩形的左上角,直接窗口高度除2,绘制窗口的时候是从客户区的中央向下打印文本,所以比起绝对居中差了一半的字符高度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-5 15:14:58 | 显示全部楼层    本楼为最佳答案   
个人理解:因为基准点是限定矩形的左上角,直接窗口高度除2,绘制窗口的时候是从客户区的中央向下打印文本,所以比起绝对居中差了一半的字符高度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-28 09:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表