我将一个bmp文件读入了。得到了它的信息头指针,数据指针等等。也可以显示出来了。
但现在我想把它生成一个CBitmap对象。我用
CBitmap ImagBmp;HBITMAP hBitmap = CreateDIBitmap(pDC->m_hDC,(LPBITMAPINFOHEADER)   m_lpBmpInfoHeader,(LONG)CBM_INIT,(LPSTR)m_lpBmpInfoHeader+sizeof(BITMAPINFOHEADER)+m_numColors*sizeof(RGBQUAD),(LPBITMAPINFO)m_lpBmpInfoHeader,DIB_RGB_COLORS);LPBITMAP lpBitmap = (LPBITMAP)(hBitmap);这么得不到指针啊?是hBitmap没生成么?因为我想用ImagBmp.CreateBitmapIndirect(lpBitmap);来生成CBitmap对象的。
或者谁能告诉我用其他方法将bmp生成CBitmap.
回帖或发邮件给我谢谢。我的email:[email protected]

解决方案 »

  1.   

    A DIBSection wrapper for Win32 and WinCE
    By Chris Maunder A class that makes using DIBSections as simple as using a CBitmap  http://www.codeproject.com/bitmap/dibsection.asp
      

  2.   

    Add fast user-extensible image processing support to CBitmap
    By DanG Provides built-in graying, rotating, shearing, resizing, blurring, sharpening, flipping, negating and color replacement to CBitmap as well as support for user-defined processing plugins 
    http://www.codeproject.com/useritems/ExtendedBitmap2.asp
      

  3.   

    CBitmap ImagBmp;
    HBITMAP hBitmap = CreateDIBitmap(pDC->m_hDC,(LPBITMAPINFOHEADER)m_lpBmpInfoHeader,(LONG)CBM_INIT,
    (LPSTR)m_lpBmpInfoHeader+sizeof(BITMAPINFOHEADER)+m_numColors*sizeof(RGBQUAD),(LPBITMAPINFO)m_lpBmpInfoHeader,
    DIB_RGB_COLORS);
    ImagBmp.Attach(hBitmap);CDC ImgDC;
    ImgDC.CreateCompatibleDC(pDC);
    CBitmap *pOldImagBmp = ImgDC.SelectObject(&ImagBmp);        pDC->SetStretchBltMode(COLORONCOLOR);
    TransparentBlt(pDC->m_hDC, m_DstBimapLtPt.x, m_DstBimapLtPt.y, DstBmpWidth, -DstBmpHeight, ImgDC.m_hDC,
    0, 0, bmpWidth, bmpHeight, RGB(255,255,255));to zfive5(醉马不肖) 
    我用了Attach();但是为什么图形没有显示出来啊?我的代码有问题么?
      

  4.   

    谢谢大家!我将-DstBmpHeight改成DstBmpHeight就能显示出来透明的位图了。可是因为我用的是逻辑坐标系,所以显示的是一个以(m_DstBimapLtPt.x,m_DstBimapLtPt.y)为左下顶点的倒的图形。以前我显示的函数用的是
    StretchDIBits( pDC->m_hDC,
    m_DstBimapLtPt.x, m_DstBimapLtPt.y, DstBmpWidth, -DstBmpHeight,
    0, 0, bmpWidth, bmpHeight,(void*)m_lpImageData, m_lpBmpInfo,DIB_RGB_COLORS, SRCCOPY);
    必须把-DstBmpHeight设成负的,否则也是倒着的图形。但是TransparentBlt()函数好像不支持
    长度写成负的啊!请问各位大侠,该怎么办啊?