CreateFont第一个参数还是不知道正负有什么区别:( MSDN上看了半天看不懂然后创建了一个12和-12的字体感觉一模一样没区别啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 函数CreateFont()的lfHeight函数.通常人们习惯于用点作为大小的单位,比如Size 10,Size 12等等.但是在处理字体时,函数CreateFont()并不接受点作为大小的单位.它需要的逻辑单元.逻辑单元用于你的显示器和你的打印机是不同的.这种情况存在的原因就是因为不同设备的分辩率相差很大...打印机可以轻松地显示每英寸600至1200像素,而对于显示器能得到每英寸200像素的分辩率就很幸运了...假如你在打印机上用的是和显示器同样大小的字体,很可能你看不到单个单个的字符.我们所要做的就是将以点为大小单位的字体转变成设备所需要的恰当的逻辑大小.因此我们要获取显示器的设备环境句柄HDC,然后用函数GetDeviceCaps()获取每英寸的逻辑像素的数值.然后再根据MSDN中告诉我们的,将这个数值与12相乘再除以72,就将字体大小为12个点转换成了CreateFont()函数所需要的正确的逻辑大小.至于乘以12除以72就可以用函数MulDiv().得到的这个逻辑大小值我们将它存储在lfHeight,再将它作为第一个参数传送给CreateFont() nHeight 字体高度(逻辑单位)等于零为缺省高度,否则取绝对值并和可用的字体高度进行匹配。 lfHeight 这是以逻辑单位表示的希望的字元高度。您可以将lfHeight设定0,以使用内定大小,或者根据栏位代表的含义将其设定为正数或负数。如果将lfHeight设定为正数,就表示您希望该值表示含有内部间隔(不是外部间隔)的高度。实际上,所要求的字体行距为lfHeight。如果将lfHeight设定为负值,则Windows会将其绝对值作为与点值一致的字体高度。这是一个很重要的区别:如果想要特定点值的字体,可将点值转换为逻辑单位,并将lfHeight栏位设定为该值的负数。如果lfHeight是正值,则TEXTMETRIC结构的tmHeight栏位近似为该值(有时有微小的偏差,可能由於舍入误差所引起)。如果lfHeight是负值,则它粗略地与不包括tmInternalLeading栏位的TEXTMETRIC结构的tmHeight栏位相匹配 使用双缓冲后,坐标映射模式失效 获取进程路径的问题 为什么嵌套Frame无法响应按钮消息 求一个vc++ 6.0 使用smtp 发送邮件的源码学习 单文档工程,加个对话条,上面放个控件,改变这个控件的背景颜色 为什么调用对话框的Create函数,其OnInitDialog函数没有执行? edit控件的背景色怎么改变... 如何对float型变量的输出进行控制? 请给详细解释一下"平台"的概念,怎么出现了这么多"平台"? 在VC中怎么添加额外的LIB 求助:关于通信管道的用法? 怎样访问ACCESS数据库中的多个表
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货