你看看这个函数可能对你有帮助setrop2(),特别是里面的参数

解决方案 »

  1.   

    代码来了:
    class CTestView
    {
    protected:
    CPoint m_ptLBDown;
    BOOL m_bLBDown;
    CPoint m_ptMove;
    }CTestView::CTestView()
    {
    m_bLBDown = FALSE;
    }void CTestView::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    m_ptLBDown = point;
    m_ptMove = point;
    m_bLBDown = TRUE;
    CView::OnLButtonDown(nFlags, point);
    }void CTestView::OnMouseMove(UINT nFlags, CPoint point) 
    {
    if(m_bLBDown)
    {
    CClientDC dc(this);
    dc.SetROP2(R2_NOTXORPEN);
    dc.MoveTo(m_ptLBDown);
    dc.LineTo(m_ptMove);
    dc.MoveTo(m_ptLBDown);
    dc.LineTo(point);
    }
    m_ptMove = point;
    CView::OnMouseMove(nFlags, point);
    }void CTestView::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    m_bLBDown = FALSE;
    CView::OnLButtonUp(nFlags, point);
    }应该能达到你的要求了,具体逻辑自己设计。
      

  2.   

    haizhiyu的代码不错!我想也应该解决了你的问题!
      

  3.   

    适时画图,
    1。每次清屏,肯定是最差的,效率和效果上都差;
    2。使用防闪,还是不够好。(主要是效率上,onpaint也很难控制那些东西不要重画)
    3。使用异或码,应该是最好的。(二员异或对于画线是足够了。)
      

  4.   

    哎,辛苦了这么久居然没分,木头,试过我的代码了吗?异或就这样使用SetROP2(R2_XORPEN);
      

  5.   

    SetROP2(R2_XORPEN);这就是使用异或笔进行画线,
    用到的原理:和电子电路的异或效果一样。画2次就等于啥都没有。
    (实际上也就是对象素颜色进行异或运算)具体使用时,需要使用那种,api大全上应该都有列出。