Private Sub Form_Click()
    Print Label1.FontSize
End SubPrivate Sub Form_Load()
    Label1.AutoSize = True
    Label1.FontSize = 20
End Sub为什么打印出来字体的大小是20.25?

解决方案 »

  1.   

    fontsize最终要转化为字体的长宽数据,长宽数据对应像素,不会存在0.3、0.5个像素,因此,不是任何的fontsize都有对应的像素,你指定一个fontsize值,如果该值不可用,则转化为最接近的值
      

  2.   

    还是不太明白,fontsize=20这20的单位是什么? 这个单位和像素如何转换?fontsize的属性单位确定是像素吗(我记得在哪里看过说单位是磅)?
      

  3.   

    你既然设置 AutoSize = True 了,那么再设置的fontsize 就无效了。
      

  4.   

    通常字体的大小单位不是像素,而是磅。
    所以设定的 FontSize 要经过 磅->像素(取整)->磅 的转换,可能产生小数。只有点阵字体的标准单位才是像素,不信你换 Terminal 字体试试。如果谁还以为字体大小就是像素,那就非常凹凸了
    ——你生活在 DOS+点阵字体 的时代。
      

  5.   


    Label1.FontSize = 20 这个20的单位是磅?然后转换为像素,当我打印的时候它又由像素转换为磅?
    是这个意思吗?如何验证或为什么要经过这一转换?
      

  6.   

    首先:
    1英寸 = 72磅
    默认屏幕 DPI 为 96,即 1英寸 = 96 像素。其次:
    FontSize 是一个兼容属性,其实是 Font.Size,单位由字体决定。最后:
    无论字体设计时用什么单位,作为屏幕字体,必须转换为像素单位。所以:
    [Property Let] Font.Size = 20
    20磅 = 20/72*96 ≈ 27像素
    所以实际设备显示的字体大小为 27像素。[Property Get] Font.Size = 27/96*72 = 20.25磅
    这就是你最后得到的字体大小。