我在窗体上放一上百个label,并实现它们可以运行时拖放的功能,cpu利用率根本未见提升,而我用canvas模拟画label,cpu就占得很多,为什么会这样?

解决方案 »

  1.   

    是不是处理了OnPaint之类的事件
      

  2.   

    在绘制过程中加一些sleep是不是会好一些
      

  3.   

    没有用OnPaint,但用了onmousemove..这些事件,鼠标在form上移动时,就用canvas画,很慢
      

  4.   

    hongqi162(失踪的月亮) ,加不加sleep(1),都没什么区别
      

  5.   

    可能是由于鼠标在移动时,不断地触发画画,CPU时间被大量占用。
    是不是设个标志位,在画的过程中防止再进入
      

  6.   

    HsWong(),确实是不断地触发画画,但是我给label的mouseMove事件也写了更新其位置的语句,label的显示就是飞快
      

  7.   

    画LABEL慢?动态创建个LABEL试试不妨.
      

  8.   

    你在canvas画的程序怎么写的?
      

  9.   

    不要用onmousemove,处理invlidate消息
      

  10.   

    是Invalidate,在paint中写好重画算法。重画时不要全部重画,一般使用InvalidateRect
      

  11.   

    直接画不可能比Label慢的, 只会比他快很多!你的算法一定有问题, 估计你是整个窗口重绘了。