痛苦中。

解决方案 »

  1.   

    你说的是选区反色是吧,可以用strechBlt和setROP2来使指定的区域反色,你如果用鼠标指定区域那应该就是你要的效果了
      

  2.   

    简单的选区用WINDOWS的GDI对象REGION是可以实现的,可以用GetRegionData 得到这个REGION对象的的每个小矩形,然后对每个矩形的数据进行处理。
    当然正真意义上的选区实际上一幅灰度图。
      

  3.   

    //如果矩形宽或高小于1则返回
    if((abs(m_ptMove.x - m_ptDown.x) <1) || abs(m_ptMove.y - m_ptDown.y)<1)
    return;
    CDC* pdc = GetDC();
    CPen newpen,*oldpen;

    newpen.CreatePen(PS_DOT, 1, RGB(255,0,0));
    oldpen = pdc->SelectObject(&newpen);
    SetROP2(pdc->m_hDC,R2_XORPEN); //设置为异或笔

    pdc->MoveTo(m_ptDown.x,m_ptDown.y);
    pdc->LineTo(m_ptMove.x,m_ptDown.y);
    pdc->LineTo(m_ptMove.x,m_ptMove.y);
    pdc->LineTo(m_ptDown.x,m_ptMove.y);
    pdc->LineTo(m_ptDown.x,m_ptDown.y); pdc->SelectObject(oldpen);
    ReleaseDC(pdc);
    return;