用GetPixel和SetPixel逐点Copy就行

解决方案 »

  1.   

    CClientDC dc(this)
    CMemDC memdc;
    ...........
    //这里把黑白图先用BitBlt Copy到 dc中
    //再把彩图选入memdc
    ...........
    CRect rc(xx,xx,xx,xx);//图像的区域for(int j=rc.bottom;j>=rc.top;j--)
    for(int i=rc.left;i<=rc.right;i++)
    {
        COLORREF cr=memdc.GetPixel(i,j);
        dc.SetPixel(i,j,cr);
    }
      

  2.   

    to:thecct(涛)可以再具体一点嘛,比如怎样用bitblt
    copy到dc中.
    还有这种效果是否类似乳化的效果,那样不太好吧?
      

  3.   

    vc知识库第13期有个例子,你可以去看一下
    www.vckbase.com
      

  4.   

    to:ytweiwei(最近正在学VB) 上面的不行的.效果不同
      

  5.   

    老天,这也值一百分,不抢白不抢:
    //(left,top)-(right,bottom)要作图的区域
    void Draw(HDC hDC,HBITMAP hBA,HBITMAP hBB,int left,int top,int right,int bottom)
    {
         HDC hdcA = CreateCompatibleDC(hDC);
         HDC hdcB = CreateCompatibleDC(hDC);
         SelectObject(hdcA,hBA);
         SelectObject(hdcB,hBB);
         for(int y=top;y<bottom;y++)
         {
              BitBlt(hDC,left,top,right,y,hdcA,0,0,SRCCOPY);
              BitBlt(hDC,left,y,right,bottom,hdcB,0,0,SRCCOPY);
         }
         DeleteDC(hdcA);
         DeleteDC(hdcB);
    }
    肯定比GetPixelV,SetPixelV快非常多。
      

  6.   

    HDC hdc=GetDC(hWnd);//窗口DC
    hmemdc=CreateCompatibleDC(hdc); //建立MemDChbmpbw=LoadImage(...............);//载入黑白位图
    hbmpcr=LoadImage(...............);//载入彩色位图SelectObject(hmemdc,hbmpbw);//黑白位图选入MemDC
    BitBlt(hDC,0,0,100,100,hmemdc,0,0,SRCCOPY);//SelectObject(hmemdc,hbmpcr);//彩色位图选入MemDCfor(int j=100;j>=0;j--)
    for(int i=0;i<=100;i++)
    {
        COLORREF cr=GetPixel(hmemdc,i,j);
        SetPixel(hdc,i,j,cr);
    }