本帖最后由 kalelshey 于 2011-08-30 11:34:36 编辑

解决方案 »

  1.   

    闪烁产生一般都是刷新背景造成的。你可以建立一个大的TBitmap对象,把你的图先画在TBitmap上面, 然后就bitblt到你显示的Canvas上面,就可以避免图像闪烁的问题。不要直接在显示的Canvas对象上直接画图。用Drawgrid的话,处理游戏一类的情况还是不太合用的。
      

  2.   

    1楼的提议很对,一般来说如果是OnPaint事件就可以直接贴图,如果图像需要改变就先在TBitmap上画,再贴到Canvas上。
      

  3.   

    除了1L说的以外,你的绘图代码写在DrawGrid1DrawCell里面,偏偏这又是个频繁刷新的函数,只要是grid内容修改等等都会调用,所以频繁刷新的结果就是闪烁,所以你可以尝试修改绘图逻辑,或者增加判断条件,不需要重绘的时候不要绘制,例如当鼠标拖动图片到grid时增加一个标记,只有标记为true时才进行重绘
      

  4.   

    哦对了,另外还有父容器的doublebuffer要设为true