主要功能是 在 GUI 中实现滚动文字效果,同时测试滚动文字动画的耗时与时间精度问题。
SetBatchLines -1
WinW := XPos2 := 300
Gui Font, s14, Microsoft YaHei UI
text := "测试Gui显示文字的循环滚动效果"
Gui +ToolWindow
Gui Add, Text, x%XPos2% y15 BackgroundTrans vtext4, %text%
GuiControlGet, Text4, Pos
Gui Add, Text, % "x-999 y10 w9999 h" (Text4H += 10) " +0x12" ; 上下分割线
Gui Show, w%WinW% h60, 滚动文字展示
计时()
; /*
SetTimer Animate, 15
Return
Animate:
GuiControl Move, Text4, % "x" (XPos2-=2)
GuiControlGet Text4, Pos
If (text4X + text4W < 0)
MsgBox % "耗时:" 计时() " 毫秒"
Return
*/
; Loop会占有线程,Loop+Sleep的精度计算与SetTimer不一样
Loop {
Sleep 20
GuiControl Move, Text4, % "x" (XPos2-=2)
GuiControlGet Text4, Pos
If (text4X + text4W < 0)
MsgBox % "耗时:" 计时() " 毫秒"
}
; Gui Hide
Return
GuiClose:
ExitApp
; SetTimer15耗时:4528.450300 毫秒
; SetTimer16耗时:7224.736900 毫秒
; Loop+Sleep20耗时:4519.076900 毫秒
; Loop+Sleep21耗时:7241.284200 毫秒
; 测完了,SetTimer精度=Sleep-5。都有精度问题,就是表现的不一样而已。
; 精度有个阶级段位,15和16数值上差1,但是精度段位差一个阶级
计时() {
Static
if 开始=
DllCall("QueryPerformanceFrequency", "Int64*", 频率), DllCall("QueryPerformanceCounter", "Int64*", 开始)
else
DllCall("QueryPerformanceCounter", "Int64*", 结束), 耗时:=(结束 - 开始)/频率*1000, 开始:=""
Return 耗时
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)