作者visor (说好的年终呢~~~~)
看板C_and_CPP
标题Re: [问题] wxWidgets (弄了好几天XD)
时间Fri Sep 4 15:30:15 2009
※ 引述《applecool (苹果酷)》之铭言:
: 请问一下各位,
: 我现在有摄影机输入(pixel值阵列),
: 直接OnPaint画在dc上,
: 如果不在OnPaint里面加上
: Refresh(true);
: Update();
: 就只会印一张
: 如果加上
: 虽然会一直出现摄影机的影像
: 但是UI按钮几乎都失效,
: CPU记忆体用到百分之百
: 想请问我到底要怎样才能让他印出影像而又不会按钮失效呢???
: 已经弄了好几天了 T____T
: 我有尝试过 OnIdle, 本来想用多执行绪,但是不知道跨平台的写法要怎麽写 XD
: 请各位教教我
: 感谢!!!
刚刚你传讯问我 timer 做法
我只能给你个简单流程 因为我也没写过 wxwidget 不过我写过 gtk
做法都差不多
我们假设 fps 是 30
1.timer 开始
2.纪录时间 a
3.撷取影像
4.处理影像
5.将影像画到 screen 上
6.纪录时间 b
7.设定下次 timer 时间 1/30 秒 - (b - a)
8.timer 结束
这样可以比较精确的控制到 fps 30
不过 timer 的触发很容易受到其他的事件影响
如果要更精确的 就改用 thread 吧
1.while(1) {
2.纪录时间 a
3.撷取影像
4.处理影像
5.将影像画到 screen 上
6.纪录时间 b
7.sleep( 1/30 秒 - (b - a))
8.}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.160.66
1F:→ visor:如果怕时间那边减出来是负值 做个检查就好了 09/04 15:33
2F:推 applecool:请问要怎麽作检查呢(读取共同变数???) 09/04 15:33
3F:→ visor:检查 b - a 值就好了 09/04 15:34
4F:→ visor:讲太快 检查 1/30 秒 - ( b - a) 值 09/04 15:35
5F:推 applecool:感谢v大!!!! 09/04 18:09