我用CWindowDC得到dc,然后在屏幕上从左上到右下使用lineto划一条线,怎么把这条线在擦除呢?

解决方案 »

  1.   

    方法很多啊,一种就是Invalidate刷新
    另外一种就是重绘背景(如果你背景是白色的,那么就重新把背景再画成白色)
      

  2.   

    可以用异或的方式实现擦除
    原理:假如背景中某点像素值为x,当前pen的颜色值为y,则两次xor,就又变成了x,实现了擦除。如x=1001,y=1010,第一次x xor y = 0011, 第二次 0011 xor y = 1001
    这种方式只适合于要求不高的场合,因为第一次xor操作会导致背景色改变。在游戏中是采用拷贝背景贴图方式实现的,一般采用双缓冲技术。:)
      

  3.   

    InvalidateRect倒是可以,但是背景有闪烁呀
      

  4.   

    我可以不可以取到lineto经过的点的像素RGB,存储,擦除的时候每经过一个像素,把笔的颜色调成下一个点的RGB。这样可行不可行?
    怎么实现呢?
      

  5.   

    这个太麻烦了,先用SetROP2(R2_NOT)设置取反,然后再画一遍。
      

  6.   

    这个太麻烦了,先用SetROP2(R2_NOT)设置取反,然后再画一遍
    楼上的,你试过了吗?用穿过一个NULL_BRUSH矩形的线条(最好设置画笔颜色和宽度,比较明显)就可以验证,这个方法是错误的。-_-