我现在可以分别实现放大和拖动,但是都是独立的,我想让图像放大后可以拖动,拖动后也可以缩放,该怎么做?
pDc->StretchBlt(0,0 ,rect.Width(),rect.Height(),&MemDC,m_midx,m_midy,rect.Width()/m_zoomnumber,rect.Height()/m_zoomnumber,SRCCOPY);//缩放pDc->BitBlt(0 ,0,rect.Width(),rect.Height() ,&MemDC,-x,-y,SRCCOPY);//拖动

解决方案 »

  1.   

    晕,发坏了
    重发
    pDc->StretchBlt(0,0 ,rect.Width(),rect.Height(),&MemDC,m_midx,m_midy,rect.Width()/m_zoomnumber,rect.Height()/m_zoomnumber,SRCCOPY);//缩放
    pDc->BitBlt(0 ,0,rect.Width(),rect.Height() ,&MemDC,-x,-y,SRCCOPY);//拖动
      

  2.   

    其中m_midx,m_midy是中心的坐标,m_zoomnumber是放大倍数
    x,y分别是鼠标在横向和纵向上移动的距离
      

  3.   

    我试了一下,发现把这句
    pDc->BitBlt(0 ,0,rect.Width(),rect.Height() ,&MemDC,-x,-y,SRCCOPY);//拖动
    pDc->StretchBlt(0 ,0,rect.Width(),rect.Height() ,&MemDC,-x,-y,rect.Width()/m_zoomnumber,rect.Height()/m_zoomnumberSRCCOPY);//拖动
    虽然可以,但是放大拖动后背景色是黑色的,怎么办啊?好着急
      

  4.   

    那你在StretchBlt前 把原来的移动前的背景再贴份上去啊。
      

  5.   

    背景我设得是MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(230,230,230));
    但是为什么拖动之后背景是有的,但是背景之外的颜色却是黑色的,我整个程序都没有用黑色,怎么会出现黑色呢?
      

  6.   

    一个空的DC,本身背景就是黑的(0x00000000)