| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 422 人关注过本帖
标题:50ms画一个点的问题
只看楼主 加入收藏
chen3bing
Rank: 2
等 级:论坛游民
帖 子:289
专家分:99
注 册:2008-11-12
结帖率:90.59%
  已结贴   问题点数:10  回复次数:5   
50ms画一个点的问题
项目中要画图。原来1秒钟画一个点,老是一顿一顿的。
于是改为50ms画一个点。我用了两个定时器,一个50ms触发一次,一个20ms触发一次。
50ms定时程序一个变量累加。
Private Sub Timer4_Timer()
TimerCnt = TimerCnt + 1
End Sub
另一个20ms定时器判断
If TimerCnt <> TimerCnt1 Then
    TimerCnt1 = TimerCnt
。。。。。。。。。。。。。。。。
可是不太准,差个5、 6秒。
请问高手,如何才能让它更准呢?谢谢!
2019-01-05 18:06
wds1
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:36
帖 子:347
专家分:1840
注 册:2016-3-10
  得分:5 
timer最小中断时间为20ms左右,如果程序片较小1个定时也就能控制在200ms左右。
多个定时器,除非你程序片较小,并且程序中多加doenevts,才有可能先后并发。

利用系统api能控制在10ms

2019-01-05 19:20
chen3bing
Rank: 2
等 级:论坛游民
帖 子:289
专家分:99
注 册:2008-11-12
  得分:0 
回复 2楼 wds1
谢谢!系统API怎么用啊?能详细说一下嘛
2019-01-06 08:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:248
帖 子:4393
专家分:26974
注 册:2008-10-15
  得分:5 
百度到一个测试结果,你自己考虑吧!外站内容不好全文复制,自己再搜索一下。
-------------
我们可以看到普通定时器根本无法达到1ms的分辨率,12多秒过去了才产生700多个中断。
当定时周期大于100ms时,普通定时器才处于可用状态
当定时周期大于1秒时,普通定时器与多媒体定时器相差不大
所以当你需要定时的周期小于1秒时,还是建议使用多媒体定时器。定时精度相当高,官方称可以达到1ms的精度。实测基本属实。
---------------------
作者:dk_0228

-------------
根据他的测试结果,普通定时器大约每 15ms 左右才能产生一个消息。前面搜索到的介绍是 75ms 。VB6自带的定时器控件介绍精度是100ms 。
但是,VB绘图是慢速操作,很可能在 15ms 内无法完成绘图操作。
我分析应该是处理完当前消息队伍的消息后才能完成绘图,doenevts能让程序继续响应消息,但会导致当前操作延迟。
而多媒体定时器会使用新线程,这个新线程很可能无法操作VB主线程的控件,也就是很可能无法使用VB的绘图命令。

你所谓的一顿一顿的是什么意思??
程序运行不顺畅?VB里强烈不建议在主线程中使用循环来延时。
更新图像不及时??还是图像更新闪烁?
图像更新闪烁可以使用 缓冲图像 ,然后全画面复制的方法来更新,图像不闪烁。

对 BMP 格式文件有研究吗?如果有研究,也可以直接写内存的方式来更新图像,不闪烁,不需要doenevts。
帧速15以上没多大问题。要知道 纯粹的FLASH也才这个帧速。

授人于鱼,不如授人于渔
早已停用QQ了
2019-01-06 10:15
chen3bing
Rank: 2
等 级:论坛游民
帖 子:289
专家分:99
注 册:2008-11-12
  得分:0 
我用GetTickCount()
Private Sub Timer4_Timer()
'TimerCnt = TimerCnt + 1
Time1 = GetTickCount()
End Sub
定时器4定时50ms
另一个定时器5ms
Time2 = GetTickCount()
  If Time2 - Time1 >= 48 Then
这样搞,不是太快就是太慢
2019-01-06 10:19
chen3bing
Rank: 2
等 级:论坛游民
帖 子:289
专家分:99
注 册:2008-11-12
  得分:0 
回复 4楼 风吹过b
谢谢!那个一顿一顿的问题已经解决。
就是时间不准了。
2019-01-06 10:21







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028984 second(s), 9 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved