主题:看来很简单,结果搞不懂的小程序。
Timer1.Interval = 100
Text1.FontSize = 9
End Sub
Private Sub Timer1_Timer()
If Text1.FontSize = 50 Then Timer1.Enabled = False
Text1.FontSize = Text1.FontSize + 1
End Sub
沙发
谁说不能=50?最大可以=72!
这段代码是把文本框中的字逐渐放大,编程者只打算放大到50时就停止,并不是因为不能放大到50以上。
板凳
3 楼
在Timer1_Timer过程中增加一句:
Debug.Print Text1.FontSize
你在立即窗口可以看到变化结果,就知道该怎么做了。
我原先一直认为最大字号是72,刚才一试验,才知道windows具有自动放大的能力,我输入了Text1.FontSize =1700,屏幕都已经显示不下了,也没有出错,令我大开眼界!说起来还要谢谢你,让我做了这么次试验,又长了知识了!
4 楼
5 楼
6 楼
为什么不能仅仅用等于50来判断:
因为这个定时器调用的程序执行的时间可能超过了定时器的执行间隔。
打个比方,A事件消耗5秒,而定时器每4秒中触发一次A事件,会出现什么?代码重入!
在单片机中,代码重入直接可以导致程序编译不通过,而VB中虽然不会导致不通过,但是程序的实时性值得担忧。
回归正题:
你这里对字号每次加一,我就有几个疑问:
1、字号自身是不是可能有规定,可能不是线性的。比如你赋值3,它自动修改成3.75.
2、字号的赋值,到字号的值改变的过程耗时会不会长于定时器的间隔
如果两次执行字号加一的时候,字号都还没有加一,则判断条件失效。
举个好理解的例子:
你如果吃好了,或者吃多了就停下来。
如果我说,如果你恰好吃饱了,才能停下来,麻烦就大了!
7 楼
小孙,不是这样的。
字号没有50这个等级。我们来试验一下。
将楼主的代码改为:
Private Sub Form_Load()
Timer1.Interval = 100
Text1.FontSize = 40
End Sub
Private Sub Timer1_Timer()
If Text1.FontSize > 60 Then Timer1.Enabled = False
Text1.FontSize = Text1.FontSize + 1
Debug.Print Text1.FontSize
End Sub
我们可以得到以下结果:
41.4
42.6
43.8
45
46.2
47.4
48.6
49.8
51
52.2
53.4
54.6
55.8
57
58.2
59.4
60.6
61.8
可以看到fontsize是直接从49.8跳到51的,而没有50这个规格。
我们平时自己设置的字号,都会自动被更改到一个就近的规格上,并不报错。导致很多人认为,字号想要什么便是什么。实际上字号的最小单位是0.6,只有0.6的整数倍的字号才是真的。
8 楼
9 楼
10 楼
不知道,我在vb里面实验出来的。
步长使用0.1、0.2都不会增长;使用0.3增长一次就不再增长;0.4、0.5、0.7、0.8都按照0.6增长;0.6每次都正常增长;0.9部分按照0.6增长部分照1.2增长。
您尚未登录,请登录后再回复。点此登录或注册