使用双缓冲方法:
1. 要显示的图(矩形图)先画在内存中(如Bitmap对象等等)
2. 然后再把内存中的图形画到Canvas中.
3. 一旦要重画某一种分, 直接将内存中的图形画到Canvas.
这样, 每次要改变画面时,只需画一次内存图形,再画到Canvas, 而Mouse移动等其它事件引起的画面要重画的情况,只需拷贝内存图形到Canvas,这个速度是很快的.从理论上讲,往内存中画图比往显卡中画图快.因此把复杂的图形画在内存,再一次性复制(bitblt等)到显卡内存,是很好的解决方法.游戏通常都是用这种方法,有些还用到三缓存等.

解决方案 »

  1.   

    我认为可以用多个Timage控件,背景和图画在不同的画布上
      

  2.   

    我曾经使用过IMAGE控件去实现,但是IMAGE的canvas在画图闪烁得很厉害,不知道为什么呢?
    要是使用多层的做法,如何保证每一层的图都可以看见并且可以控制。
      

  3.   

    我认为,应把原图(不带十字线的图)保存在内存中。当鼠标移动时取出十字线的区域。
    使用bitblt函数把原图的相应区域重画到Canvas,然后重新画十字线。
    这样闪烁肯定少很多。