vb-fontsize属性

qq48057527 2011-12-11 04:11:04
Private Sub Form_Click()
Print Label1.FontSize
End Sub

Private Sub Form_Load()
Label1.AutoSize = True
Label1.FontSize = 20
End Sub

为什么打印出来字体的大小是20.25?
...全文
744 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq48057527 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tiger_zhao 的回复:]
通常字体的大小单位不是像素,而是磅。
所以设定的 FontSize 要经过 磅->像素(取整)->磅 的转换,可能产生小数。
[/Quote]

Label1.FontSize = 20 这个20的单位是磅?然后转换为像素,当我打印的时候它又由像素转换为磅?
是这个意思吗?如何验证或为什么要经过这一转换?
Tiger_Zhao 2011-12-12
  • 打赏
  • 举报
回复
通常字体的大小单位不是像素,而是
所以设定的 FontSize 要经过 磅->像素(取整)->磅 的转换,可能产生小数。

只有点阵字体的标准单位才是像素,不信你换 Terminal 字体试试。

如果谁还以为字体大小就是像素,那就非常凹凸了
——你生活在 DOS+点阵字体 的时代。
booksoon 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dafu2003 的回复:]
你既然设置 AutoSize = True 了,那么再设置的fontsize 就无效了。
[/Quote]
++
qq48057527 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tiger_zhao 的回复:]
首先:
1英寸 = 72磅
默认屏幕 DPI 为 96,即 1英寸 = 96 像素。

其次:
FontSize 是一个兼容属性,其实是 Font.Size,单位由字体决定。

最后:
无论字体设计时用什么单位,作为屏幕字体,必须转换为像素单位。

所以:
[Property Let] Font.Size = 20
20磅 = 20/72*96 ≈ 27像素
所以实际设备……
[/Quote]

谢谢
Tiger_Zhao 2011-12-12
  • 打赏
  • 举报
回复
首先:
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磅
这就是你最后得到的字体大小。
dafu2003 2011-12-12
  • 打赏
  • 举报
回复
你既然设置 AutoSize = True 了,那么再设置的fontsize 就无效了。

panyong 2011-12-11
  • 打赏
  • 举报
回复
像素和里面的问题
qq48057527 2011-12-11
  • 打赏
  • 举报
回复

[Quote=引用 1 楼 worldy 的回复:]
fontsize最终要转化为字体的长宽数据,长宽数据对应像素,不会存在0.3、0.5个像素,因此,不是任何的fontsize都有对应的像素,你指定一个fontsize值,如果该值不可用,则转化为最接近的值
[/Quote]

还是不太明白,fontsize=20这20的单位是什么? 这个单位和像素如何转换?fontsize的属性单位确定是像素吗(我记得在哪里看过说单位是磅)?
贝隆 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 worldy 的回复:]
fontsize最终要转化为字体的长宽数据,长宽数据对应像素,不会存在0.3、0.5个像素,因此,不是任何的fontsize都有对应的像素,你指定一个fontsize值,如果该值不可用,则转化为最接近的值
[/Quote]
有道理
worldy 2011-12-11
  • 打赏
  • 举报
回复
fontsize最终要转化为字体的长宽数据,长宽数据对应像素,不会存在0.3、0.5个像素,因此,不是任何的fontsize都有对应的像素,你指定一个fontsize值,如果该值不可用,则转化为最接近的值

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧