CreateFont第一个参数还是不知道正负有什么区别 createfont

CreateFont第一个参数还是不知道正负有什么区别 createfont
函数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栏位相匹配

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/81965.html

更多阅读

MM们必须知道CC霜和BB霜有什么区别? 粉饼和cc霜的区别

MM们必须知道CC霜和BB霜有什么区别?——简介CC霜和BB霜之间实际上既有联系又有区别,本身CC霜就是在BB霜的基础上配方得来,故有CC霜是BB霜的升级版的说法,所以CC霜集合了BB霜原有的优点,比如美白保湿、修颜、隔离防晒等功效的基础上又加入

转载 厘清与理清,你知道有什么区别吗? 理清与厘清的区别

原文地址:厘清与理清,你知道有什么区别吗?作者:徐徐道来厘清与理清,你知道有什么区别吗?在研读《教育技术学基础理论研究》的前言第4页时,有这样一段文字:“把教育级数学置于科学与技术之林,讨论和分析了教育技术学与教育科学及技术各相关分

分数“单位1”与自然数“1”有什么区别 分数算不算自然数

分数“单位1”与自然数“1”有什么区别内容提要:什么是“单位1”?单位1与自然数1有什么区别与联系?教学中并没有给学生一个清晰明确的答案。弄不清单位1与自然数1的区别与联系,就不能正确地认识理解分数的意义,正确的认清分数与整数的关

声明:《CreateFont第一个参数还是不知道正负有什么区别 createfont》为网友記钇嘬茤分享!如侵犯到您的合法权益请联系我们删除