请问MFC如何擦除矩形区域
//画透明矩形void CDTvOptionWnd::DrawRect(CRect cp1){ CClientDC pDC(this); CBrush *cbrush=CBrush::FromHandle(HBRUSH(GetStockObject(NULL_BRUSH))); CBrush *Firstcbrush=pDC.SelectObject(cbrush); CPen newPen(PS_SOLID,2,RGB(255,102,0)); CPen* pOldPen=pDC.SelectObject(&newPen); pDC.Rectangle(cp1); pDC.SelectObject(Firstcbrush); pDC.SetROP2(R2_XORPEN); ReleaseDC(pDC);}
void CDTvOptionWnd::DrawRect(CRect cp1){ CClientDC pDC(this); pDC.SetROP2(R2_XORPEN); CBrush *Firstcbrush=pDC.SelectStockObject(NULL_BRUSH); CPen newPen(PS_SOLID,2,RGB(255,102,0)); CPen* pOldPen=pDC.SelectObject(&newPen); pDC.Rectangle(cp1); pDC.SelectObject(Firstcbrush); ReleaseDC(pDC);}
[解决办法]
这样写应该是矩形区域画出之后就擦除了,但没效果,各位前辈指导指导,先谢过大家了
=======
为什么画好了之后就擦除了啊?没看见你写擦除代码啊?你将这个:pDC.SetROP2(R2_XORPEN);
放在最后应该没有什么用吧,后面也没有绘图语句,你改绘图模式干什么?
[解决办法]
是不是因为这个函数执行以后就return了?之前执行的操作以及资源全部被清空..
我看孙鑫大大的视频看多了,到处充斥着这种思想~