hb328496536 发表于 2017-10-17 21:38:04

关于第11课中 等宽字体和变宽字体问题

问题:

                cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;

                tm.tmPitchAndFamily & 1 ? 3 : 2这个是判断 等宽或变宽 字体的,但是判断完后 为什么要等于3或2在 * cxChar (字体的宽度)/ 2 呢 ,这么做的目的是干嘛呢

ba21 发表于 2017-10-17 22:28:28

视频中,老师讲得很清楚了,具体再去认真看一遍

hb328496536 发表于 2017-10-18 11:39:30

ba21 发表于 2017-10-17 22:28
视频中,老师讲得很清楚了,具体再去认真看一遍

听不太明白呀,给我讲一下好吗

ba21 发表于 2017-10-18 14:54:22

hb328496536 发表于 2017-10-18 11:39
听不太明白呀,给我讲一下好吗



就这句话就公式表示,不明白多听几遍

SillyMe 发表于 2017-10-18 15:55:33

tmPitchAndFamliy 最后 一位 是否 是代表 字体 是否是变宽

tmPitchAndFamliy & 1 判断
是就 3/2*xChar
否就是 2/2*xChar
你也 知道 windows 计算 int会损失 精度

所以 就变了下 型

你也可以这样写

xCaps = (int)((tm.tmPicthAndFamliy & 1 3:2)/2.0*xChar);

SillyMe 发表于 2017-10-18 15:57:35

if(tm.tmPicthAndFamliy &1){
   xCaps = 3*xChar/2;
}else
{
    xCaps = xChar;
}
页: [1]
查看完整版本: 关于第11课中 等宽字体和变宽字体问题