作业帮 > 综合 > 作业

请教MFC绘制直线橡皮筋效果

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/06 17:35:20
请教MFC绘制直线橡皮筋效果
CClientDC dc(this);
dc.SelectObject(brush);
dc.SelectObject(pen);
dc.SetROP2(R2_XORPEN);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
m_ptEnd=point;
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
这是OnMouseMove函数中的代码,m_ptOrigin和m_ptEnd,一个起点,一个终点,都设置为了鼠标按下时的点,现在这段代码我不是很理解,为什么要画2遍呢?那个m_ptEnd=point;的效果又是如何体现的?还有那个SetRop绘图模式,小弟初学,很多不懂,请好心人赐教,分都拿出来了.
请教MFC绘制直线橡皮筋效果
CClientDC dc(this); //创建客户区绘图的DC
dc.SelectObject(brush); //选择要使用的刷子
dc.SelectObject(pen); //选择要使用的画笔
dc.SetROP2(R2_XORPEN); //设置前景色的混色模式为XOR模式,也就是异或模式,在此模式下,前景色=(PEN的颜色 XOR 背景色).两次XOR可还原背景色,这也是为什么要画两遍的原因!
//下面两句话是画一条从orign到end的线条.因为是采用XOR模式,所以它的作用是用于擦除上次画的线条,即还原背景色.
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
//设置新的终点
m_ptEnd=point;
//下面两句话是画一条从orign到end的线条.因为是采用XOR模式,所以它的前景色是PEN与背景色异或的结果.
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);