异或方式只是对当前的线的颜色去的异或 并不是得到原先的图像 我要得到原先的图像怎么做?

解决方案 »

  1.   

    只用颜色运算是不行的,你需要采取其他办法,比如从image加载的bitmap上入手,而不是从image本身入手
      

  2.   

    取相应位置的bitmap的数据,而不是取image的颜色数据
      

  3.   

    这样不可以 用timer控件后会闪屏~~ 
    我要对多张图片操作
      

  4.   

    多层画布只是一个方法的名称,具体实现可以很多方法的,除非你在timer中对image不断重复擦除重画,不然应该是不会闪烁的一般都是先计算好合成后的位图数据再画一次就够了
      

  5.   

    不需要用TIMER控件来控制,每个要画到上面的图片,都作为一个单独的TBITMAP层,你要擦除某个层,只要删除就可以了,最终将各个图层叠加到显示画布上输出,怎么会有闪烁呢?
      

  6.   

    我要0.01秒就要刷新一张图片 当然要用到Timer事件了 
      

  7.   

    就算你要用TIMER控制,那也不会闪烁,只是图片显示切换比较快而已
      

  8.   

    全部重新绘制一遍。下来要解决的问题是重新绘制的时候的闪烁问题。创建一个TBitMap 对象,全部绘制在上面完成。最后将绘制完成的内容一次显示到界面的Canvas 中不知道你是什么业务要0.01表刷新一个图片,是动画吗?第秒30帧一般也够用了。
    就是只有数据变化时才更新,变化的太快了,就简化成每秒更新24帧。
      

  9.   

    “0.01秒就要刷新一张图片”确实没有必要,更新太快了,根本反应不出来变化,显示器刷新一般都没这么快,尤其是LCD显示器,通常都是固定60Hz刷新率的。多层绘制显示的时候可以用“画家算法”,最先绘制的层先画到TImage上,逐层叠加。这是使用位图的方法。如果你的程序只在windows上用的话,可以使用TMetafile,它可以记录每一步的GDI操作,还可以重新播放。