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把画图的颜色变回黑色? 展开
{
// 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把画图的颜色变回黑色? 展开
展开全部
直接SetROP2(R2_NOTXORPEN);
dc.MoveTo(m_ptBigan);
dc.LineTo(m_ptMidPt);
dc.MoveTo(m_ptBigan);
dc.LineTo(point);
m_ptMidPt=point;
多余的都会被“擦除”
因为要画2次 异或取反就是原来的黑色了
dc.MoveTo(m_ptBigan);
dc.LineTo(m_ptMidPt);
dc.MoveTo(m_ptBigan);
dc.LineTo(point);
m_ptMidPt=point;
多余的都会被“擦除”
因为要画2次 异或取反就是原来的黑色了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询