问题1. 构建透明的填充刷
如下代码
HBRUSH hbrush = (HBRUSH)GetStockObject(NULL_BRUSH);
CBrush *pBrush = CBrush::FromHandle(hbrush);
问题2. 要擦除上一次的矩形
代码如下
int nOldMode = cdcc.SetROP2(R2_NOTXORPEN);
cdcc.Rectangle(CRect(m_startPoint,m_endPoint));
cdcc.Rectangle(CRect(m_startPoint,point));
第一个矩形是擦除上一次画的矩形,第二个矩形是画出当前的矩形,画图模式是R2_NOTXORPEN,就是取当前颜色的补色画图,从而擦除上一个矩形。
问题3. 顺序问题
cdcc.SetROP2(nOldMode);
这一句必须要在画的两个矩形的后面加上。如果夹在两个画矩形的语句中间的话,那么画当前的矩形时是用的纯色,而不是背景的补色,那么下一次进行擦除的时候就会得到白色,而不是背景色。