我已得到一个1024×768的 HBITMAP  hBitmap;
现在要转变成一个100×100的CBitmap类型
请指教

解决方案 »

  1.   

    我觉得可以,先把1024×768的 HBITMAP  hBitmap;
    StretchBlt转换成100×100的 HBITMAP  hBitmap2;
    然后把100×100的 HBITMAP  hBitmap2 转变成一个100×100的CBitmap类型
      

  2.   

    to  mct1025(macuntao):
       怎么从hBitmap转变成hBitmap2呢
      

  3.   

    很简单,用下面的方法就行:
    HBITMAP  hBitmap;
    ...
    CBitmap *cBtmp;
    cBtmp=CBitmap::FromHandle(hBitmap);
      

  4.   

    to gzshd(郁闷):
     如何改变大小呢?
      

  5.   

    dc是原来1024×768的 
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc,100,100);
    CDC tdc;
    tdc.CreateCompatibleDC(&dc);
    CBitmap*pOld=tdc.SelectObject(&bm);
    tdc.StretchBlt(0,0,100,100,&dc,0,
    0,1024,768,SRCCOPY);
    bm就是了
    不过我试过,缩小比例太大了,失真很厉害
      

  6.   

    自己写个函数,将1024*768hBitmap->100*100 hNewBitmap;
    然后用CBitmap::Attach()连接。
      

  7.   

    HBITMAP  hBitmap;
    ...
    CBitmap *cBtmp,*cBtmp1;
    cBtmp1=new CBitmap;
    cBtmp=CBitmap::FromHandle(hBitmap);
    CDC *cdc,*cdc1;
    cdc=new CDC;
    cdc1=new CDC;
    CClientDC dc(this);
    cdc=CreateCompatibleDC(&dc);
    cdc1=CreateCompatibleDC(&dc);
    cBtmp1->CreateCompatibleBitmap(&dc,100,100);
    cdc->SelectObject(cBtmp);
    cdc1->SelectObject(cBtmp1);
    cdc1->StretchBlt(0,0,1024,768,cdc,0,0,100,100,SRCCOPY);
    CBitmap *cbitmap=(CBitmap*)cdc1;