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

CClientDCdc(this);dc.SelectObject(brush);dc.SelectObject(pen);dc.SetROP2(R2_XORPEN);d... 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绘图模式,小弟初学,很多不懂,请好心人赐教,分都拿出来了。
展开
 我来答
无尽星空ljm
2010-07-27 · TA获得超过1793个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:0
展开全部
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);
深圳量子动力
2024-10-21 广告
双目摄像头可找深圳量子动力双目摄像系统可通过无线方式进行面部捕捉,可以满足在家、工作室、直播间、专业动捕棚等多种场景的不同使用人群。支持Metahuman Animator解算,支持升级animator高精度表情方案... 点击进入详情页
本回答由深圳量子动力提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式