visual c++中画图的一个问题?

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:24:45
CPen newPen(PS_SOLID,width,color);
CPen *oldPen = pDC->SelectObject(&newPen);
pDC->SelectObject(oldPen);
上面是oldPen保存一个旧画笔,我要用,可以正常运行,但是用下面这段代码去还输出原来画笔的样式,这是为什么呢?能不能用c++或MFC中的知识解释解释?
pDC->SelectObject(&oldPen);

pDC->SelectObject(&oldPen);的意思是将原画笔选回设备环境。
这是VC++中的一个GDI(图形用户界面)对象创建问题,在C++中GDI对象创建成功后,可以调用CDC类的SelectObject函数将对象放入设备环境中,然后就能使用这个对象进行绘图。当不再需要这个对象的时候或程序,要关闭的时候,应将所创建的对象释放掉。为了释放一个GDI对象,必须先将它从设备环境中分离出来。在CDC类的SelectObject函数在将GDI对象放入设备环境的同时,还返回一个指向上一级被选对象的指针。因此,一个比较简单的方法是把新建的GDI对象放入设备环境中的同时,将原来的GDI对象也保存起来,当任务完成后,再将原来的对象恢复,这样也就将所创建的对象删除了!

所以如果你想用新画笔的时候,应该改为:
pDC->SelectObject(&newPen);

另外,你原来写的pDC->SelectObject(&oldPen);这句话本身有误,oldpen本身就是指针,所以选用旧画笔应该是pDC->SelectObject(oldPen);

pDC->SelectObject(&oldPen);的意思是将原画笔选回设备环境。
这是VC++中的一个GDI(图形用户界面)对象创建问题,在C++中GDI对象创建成功后,可以调用CDC类的SelectObject函数将对象放入设备环境中,然后就能使用这个对象进行绘图。当不再需要这个对象的时候或程序,要关闭的时候,应将所创建的对象释放掉。为了释放一个GDI对象,必须先将它从设备环境中分离出来。在CDC类的SelectObject函数在将GDI对象放入设备环境的同时,还返回一个指向上一级被选对象的指针。因此,一个比较简单的方法是把新建的GDI对象放入设备环境中的同时,将原来的GDI对象也保存起来,当任务完成后,再将原来的对象恢复,这样也就将所创建的对象删除了!
楼上这位名叫父辈的硫磺岛的仁兄也太不人道了的吧,还全部复制我的啊!!!有点道德的哦!