当前位置: 代码迷 >> VC/MFC >> mfc 小弟我在客户区画一条直线如何把直线再消除
  详细解决方案

mfc 小弟我在客户区画一条直线如何把直线再消除

热度:121   发布时间:2016-05-02 03:50:42.0
mfc 我在客户区画一条直线怎么把直线再消除
我在客户区画一条直线,我想让变量值改变时,比如说我在客户区第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);            
------解决思路----------------------
没怎么想明白!
用一个变量去控制,在值变的时候刷新下界面不就行了?
------解决思路----------------------
一般把要画图的线信息都放入容器之中。每次都把容器中的内容画一遍。记得用双缓存

你删除了第二条线,容器内的信息就少了
------解决思路----------------------
可以用moveto 一条白色的pen
------解决思路----------------------
在画图状态下,鼠标移动时既要擦除旧图形,又要绘制新图形。这里主要有两种实现方法:一是全部重绘,二是先擦除旧图形。
如果使用矢量图全部重绘,频繁的绘图动作消耗很大,很容易造成屏幕闪动。但是如果将已有图形保存为位图,然后重绘的时候只要绘制位图即可,这样能避免闪动。
第二种方法要考虑的就是擦除旧图形的问题,本程序使用SetROP2函数设置MASK的方式,每次绘图时采用非异或运算的方式擦除旧图形:
pDC->SetROP2(R2_NOTXORPEN); //设置ROP2
DrawStroke(pDC); //画图擦除旧线(自定义函数)
SetCurrentPoint(point); //设置新点的坐标(自定义函数)
DrawStroke(pDC); //画新线(自定义函数)


我最近也在做类似的东西,这是我网上找到的方法。
  相关解决方案