我在客户区画一条直线,我想让变量值改变时,比如说我在客户区第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
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
如果使用矢量图全部重绘,频繁的绘图动作消耗很大,很容易造成屏幕闪动。但是如果将已有图形保存为位图,然后重绘的时候只要绘制位图即可,这样能避免闪动。
第二种方法要考虑的就是擦除旧图形的问题,本程序使用SetROP2函数设置MASK的方式,每次绘图时采用非异或运算的方式擦除旧图形:
pDC->SetROP2(R2_NOTXORPEN); //设置ROP2
DrawStroke(pDC); //画图擦除旧线(自定义函数)
SetCurrentPoint(point); //设置新点的坐标(自定义函数)
DrawStroke(pDC); //画新线(自定义函数)
我最近也在做类似的东西,这是我网上找到的方法。