none
我的图怎么越画越慢啊? RRS feed

  • 问题

  • 我设置了一个定时器,为500ms1触发,
    每次在不同的位置画图,是为了看起来这个图形在移动。

    刚开始画的时候很正常,到后来就越来越慢了,有时候1秒一次,不稳定,
    看CPU占用率很高,达到50%多。

    怎么回事呀?

    是不是没有用多线程?
    但我想也不需要多线程,每次就是读取数据判断位置,然后画图。
    哪里用得上多线程呢?
    2009年3月11日 14:25

答案

  • WM_TIMER优先级很低。只有消息队列中没有其他消息的时候才会被处理。你的问题是CPU占用。用一个profiler检查你的程序为什么占用CPU。
    MSMVP VC++
    • 已建议为答案 KeFang Chen 2009年3月13日 3:17
    • 取消建议作为答案 beyard 2009年3月17日 5:03
    • 已标记为答案 KeFang Chen 2009年3月17日 9:13
    2009年3月11日 19:28
    版主
  • 使用剪切框。参考VC文档中的DrawCli示例。
    MSMVP VC++
    2009年3月12日 4:50
    版主

全部回复

  • WM_TIMER优先级很低。只有消息队列中没有其他消息的时候才会被处理。你的问题是CPU占用。用一个profiler检查你的程序为什么占用CPU。
    MSMVP VC++
    • 已建议为答案 KeFang Chen 2009年3月13日 3:17
    • 取消建议作为答案 beyard 2009年3月17日 5:03
    • 已标记为答案 KeFang Chen 2009年3月17日 9:13
    2009年3月11日 19:28
    版主
  • 谢谢,CPU占用高是因为在画图吧?因为很多图要画。

    还有一个问题就是,其实我画了那么多图不必要全部显示出来,只显示一部分就可以了,
    有什么命令可以实现这个的?
    2009年3月12日 4:19
  • 使用剪切框。参考VC文档中的DrawCli示例。
    MSMVP VC++
    2009年3月12日 4:50
    版主
  • 将图形贴入内存创建的DC中.然后再通过计算要画出的部分贴在窗体或上下文中.检查是否内存泄漏.
    2009年3月12日 4:53
  • 如果我要显示在全部屏幕上,应该就不用剪切框了吧?

    绘图占时间,还是显示占据时间??

    我绘图可能绘制10个屏幕大小,显示只能显示在1个全屏幕上。
    这样不用管吧,还有没有优化的方法?
    如果绘图不占很多时间,那我就不优化了
    2009年3月12日 5:03