如何从位图句柄HBITMAP 获得该图像的信息?

解决方案 »

  1.   

    CBitmap bitmap;
    bitmap.Attach(hBitmap)
    然后就可以用CBitmap的函数了 
    BITMAP bm;
    bitmap.GetBitmap(&bm);
    return bm.bmWidth等等;
      

  2.   

    HBITMAP hbm;//假设 hbm 为有效位图对象
    BITMAP bm;
    GetObject(hbm, sizeof(bm), &bm);
    HBITMAP hbm2 //假设 hbm2 为有效位图对象, 
                 //并且是用 CreateDIBSection 函数创建
    DIBSECTION dibs;
    GetObject(hbm2, sizeof(dibs), &dibs);
      

  3.   

    看看那两个结构都有些什么东东:typedef struct tagBITMAP {
      LONG   bmType; 
      LONG   bmWidth; 
      LONG   bmHeight; 
      LONG   bmWidthBytes; 
      WORD   bmPlanes; 
      WORD   bmBitsPixel; 
      LPVOID bmBits; 
    } BITMAP, *PBITMAP; 
    typedef struct tagDIBSECTION { 
      BITMAP              dsBm; 
      BITMAPINFOHEADER    dsBmih; 
      DWORD               dsBitfields[3]; 
      HANDLE              dshSection; 
      DWORD               dsOffset; 
    } DIBSECTION, *PDIBSECTION; 
      

  4.   

    foxmail(萧遥) 兄,realdreamer(楼主英明,贫僧久仰大名,特来拜见)兄:
        请问你们的方法能在ATL里使用吗?
      

  5.   

    对用GetObject()函数就可以获得图形的信息如二楼所说
      

  6.   

    这里:
    "HBITMAP hbm2 //假设 hbm2 为有效位图对象, 
                 //并且是用 CreateDIBSection 函数创建
    DIBSECTION dibs;
    GetObject(hbm2, sizeof(dibs), &dibs);"hbm2一定要是用 CreateDIBSection 函数创建的吗?为什么?
      

  7.   

    MSDN 里是这么规定的. 
    这事实上牵涉到两种位图, 就是大家都知道的, 设备无关位图和设备相关位图. CreateDIBSection 生出来的是设备无关位图, 除了它, 其他生出来的全是设备相关的位图