如何以HBITMAP位图句柄来判断位图是否为黑色。或一个位图文件为全黑色?谢谢!

解决方案 »

  1.   

    d可以根据句柄得到象素信息,判断是否为0就可以了,
    DIB熟悉些!
    好像有GetPixel这个函数吧!
      

  2.   

    CDC memDC ;
    memDC.CreateCompatibleDC(NULL) ;//创建内存DC CBitmap bitmap ;
    bitmap.Attach(hbitmap) ;memDC.SelectObject(&bitmap) ;
    COLORREF clrPixel = memDC.GetPixel(x,y) ;//x,y就是你想要得到的颜色值
      

  3.   

    CDC memDC ;
    memDC.CreateCompatibleDC(NULL) ;//创建内存DC CBitmap bitmap ;
    bitmap.Attach(hbitmap) ;memDC.SelectObject(&bitmap) ;
    COLORREF clrPixel = memDC.GetPixel(x,y) ;//x,y就是你想要得到的颜色值
      

  4.   

    clrPixel 是你想要得到的颜色值,而x,y是象素的坐标值。
      

  5.   

    各位,要不要这么麻烦呀。
    即然了有HBITMAP 的Handle.判断是否全黑,很快的方法。
    CBitmap* bm;
    bm=CBitmap.FromHandle(HBITMAP);
    DWORD k;
    byte* lpbits;
    bm.GetBitmapBits(k,lpbits);
    for(int i=0;i<k;i++)
    {
       if(lpbits[i]!=0xFF)
       {
          return TRUE;
       }
    }
    return FALSE;
      

  6.   

    谢谢大家,不好意思来晚了。 GetPixel(x,y) 中的x,y在位图句柄里如何确定呢?我要知道位图里是否为纯色要得到每个点的值吧?to zwlpower(天问) ;
    谢谢你写的例子,但我调不通,还在调试。 好像是lpbits这个参数没取到值。
      

  7.   

    CBitmap* bm;
    bm=CBitmap.FromHandle(HBITMAP);
    BITMAP bitmap;
    bm->GetBitamp(&bitmap);
    DWORD k=(bmitmap.bmHeight*bmitmap.bmWidth*bmitmap.bmPlanes*bmitmap.bmBitsPixel)/sizeof(byte)/8;
    byte* lpbits=new byte[k];
    bm.GetBitmapBits(k,lpbits);
    for(int i=0;i<k;i+=bmBitsPixel/sizeof(byte)/8)
    {
       if(lpbits[i]!=0x000000)
       {
          return TRUE;
       }
    }
    return FALSE;