永发信息网

VC++中下面代码说是恢复原来的画笔,我理解不了

答案:2  悬赏:50  手机版
解决时间 2021-07-20 10:55
  • 提问者网友:最爱你的唇
  • 2021-07-19 11:33

CPen pen(PS_SOLID,2,RGB(255,0,0));

CDC *pDC=GetDC();

CPen *pOldPen=pDC->SelectObject(&pen);//这句的pOldPen不是保存了新画笔吗..

pDC->Rectangle(0,0,100,100);

pDC->SelectObject(pOldPen);//这句不是恢复了新画笔吗...为什么是原来的

最佳答案
  • 五星知识达人网友:封刀令
  • 2021-07-19 13:11

CPen pen(PS_SOLID,2,RGB(255,0,0)); //构建一个新画笔


CDC *pDC=GetDC();



CPen *pOldPen=pDC->SelectObject(&pen);


//SelectObject(&pen);设置新画笔.


//因为SelectObject( );函数会返回原来的画笔. 所以pOldPen保存的就是原来的画笔!



pDC->Rectangle(0,0,100,100);


pDC->SelectObject(pOldPen); //因此这里就是恢复原来的画笔!

全部回答
  • 1楼网友:雪起风沙痕
  • 2021-07-19 13:18
SelectObject的返回值是原来的,不是新的 返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯