我在客户区画一条直线,我想让变量值改变时,比如说我在客户区第2行画了一天直线,现在我变量值改变了,我想在第三行画一条直线,这时我想把第2行画的线给消除,请问怎么消除,请各位大侠指点我一下,谢谢你们。以下是我画的直线
CPen pen;                             
CPen *oldPen;                        
pen.CreatePen(PS_SOLID, 3,RGB(255,0,0));
oldPen=pDC->SelectObject(&pen);      
pDC->MoveTo(0,50);                   
pDC->LineTo(1200,50);                               
pen.DeleteObject();                   
pDC->SelectObject(oldPen);            MFC

解决方案 »

  1.   

    可以用moveto 一条白色的pen
      

  2.   

    谢谢各位的回答,由于我在客户区中添加了一张图片,然后又画了一条红色的直线,如果我用背景色RGB来填充擦除的话,这样会在图片上产生白色的印迹。对于2楼来说,我的问题就是怎么擦除已画的直线?我不想用背景色RGB来填充和客户区一样的颜色,因为我客户区是一张彩色图片,有没有具体的方法或者函数来擦除已绘的直线,请大家帮组下。定给分
      

  3.   

    在画图状态下,鼠标移动时既要擦除旧图形,又要绘制新图形。这里主要有两种实现方法:一是全部重绘,二是先擦除旧图形。
    如果使用矢量图全部重绘,频繁的绘图动作消耗很大,很容易造成屏幕闪动。但是如果将已有图形保存为位图,然后重绘的时候只要绘制位图即可,这样能避免闪动。
    第二种方法要考虑的就是擦除旧图形的问题,本程序使用SetROP2函数设置MASK的方式,每次绘图时采用非异或运算的方式擦除旧图形:
    pDC->SetROP2(R2_NOTXORPEN); //设置ROP2
    DrawStroke(pDC); //画图擦除旧线(自定义函数)
    SetCurrentPoint(point); //设置新点的坐标(自定义函数)
    DrawStroke(pDC); //画新线(自定义函数)
    我最近也在做类似的东西,这是我网上找到的方法。
      

  4.   

    一个比较笨的做法是,在每一次绘制新的线条之前,用一个与背景相同颜色的刷子Brush把客户区刷一遍,