MFC编程画图的问题

voidCBbzyxView::OnMouseMove(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodeh... void CBbzyxView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptBigan);
dc.LineTo(m_ptMidPt);
dc.MoveTo(m_ptBigan);
dc.LineTo(point);
m_ptMidPt=point;
CView::OnMouseMove(nFlags, point);
}
这是代码,我有一点不明白的是,当用dc.SetROP2(R2_NOT);把画图颜色取为当前像素的反值,及白色,然后用白色再用dc.MoveTo(m_ptBigan);dc.LineTo(m_ptMidPt);这两句把刚刚画出的图形擦除后。此时画图颜色还是白色,直接用dc.MoveTo(m_ptBigan);dc.LineTo(point);这两句画出的图形为什么不是白色而是黑色?为什么不用在把上次图形擦除后,再用dc.SetROP2把画图的颜色变回黑色?
展开
 我来答
百度网友1cf58ab
2012-08-07 · TA获得超过343个赞
知道小有建树答主
回答量:276
采纳率:50%
帮助的人:363万
展开全部
dc.SetROP2(R2_NOT) 语句,指的是在屏幕上画出与原像素相反的颜色,擦除图形后,画图的颜色是白色,再用 dc.MoveTo(m_ptBigan);dc.LineTo(point);这两句时,画出的还是与屏幕颜色相反的颜色,这时需要画线的位置变成了白色,画出的线条当然是黑色。当这两句执行完,你需要加上一句: dc.SetROP2(R2_NOT),还原回原来的画线方式。
anddygon
2012-08-18 · TA获得超过230个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:87.5万
展开全部
直接SetROP2(R2_NOTXORPEN);
dc.MoveTo(m_ptBigan);
dc.LineTo(m_ptMidPt);
dc.MoveTo(m_ptBigan);
dc.LineTo(point);
m_ptMidPt=point;

多余的都会被“擦除”
因为要画2次 异或取反就是原来的黑色了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1356590120
2012-08-07
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式