fomr1.canvas.draws(0,0,bmp);
如果反复调用上面的语句,比如100000次,程序是否会挡掉。
对于这个canvas是否有释放画布资源功能。
如何处理反复调用增加内存占用问题。
请指教.

解决方案 »

  1.   

    只要及时释放bmp就可以了,canvas只是用后一个bmp的内容覆盖当前显示的内容而已
      

  2.   

    我用了一个定时器,间隔为100,执行下面程序,大约每秒消耗4k内存。   
    Canvas.Handle := GetWindowDC(Handle);
       Canvas.Draw(0,0,TitBitmap);
       if titlp >210 then
          titlp:=27;
       Canvas.Draw(titlp,0,TitDBitmap);
       titlp:=titlp+1;
       Canvas.Brush.Style := bsClear;
       Canvas.TextOut(27,6,TextTit);
       Canvas.Brush.Style := bsSolid;
      

  3.   

    如果仅仅这句的话 Canvas.Draw(0,0,TitBitmap); 不应该会消耗内存。
    但是上面的语句中
    GetWindowDC(Handle); 会消耗内存。
    每次用完必须用 releasedc 函数释放。
      

  4.   

    程序一开始占用内存8mb,以后内存不断上升,差不多到占用内存12mb的时候,又回到8mb了。
      

  5.   

    现在做的这个程序是:axpro。
    问题出现在绘制标题栏动画时,我在使用releasedc后,
    前面textout出的文字字体发生改变。
      

  6.   

    将canvas设成全局变量,只在程序开始和结束时调用getwindowdc和releasedc
      

  7.   

    窗体得dc总变,我必须反复getwindowdc
    大家都认为,canvas没有问题?