如何以HBITMAP位图句柄来判断位图是否为黑色。或一个位图文件为全黑色?谢谢!
解决方案 »
- 在多文档中实现 Beyond Compare 的功能
- 能设置edit的单行颜色吗,只能用SDK
- 关于CTime的一个小问题
- webbrowser 如何获取网页onload后的信息
- VC++串口通讯问题
- 请教下关于内存与文件映射的问题
- 怎么不让用ReadDirectoryChangesW();函数??
- 为什么有时候vc6打开一个项目时classview里不显示所有的类
- 请问放在Globals文件夹里跟不放在里面的函数有什么区别??
- vc下怎样用ado调用oracle存储过程给BLOB参数赋空值?
- CFontDialog的使用?
- Windows消息机制的疑问?为什么在消息处理函数中还能SendMessage?
DIB熟悉些!
好像有GetPixel这个函数吧!
memDC.CreateCompatibleDC(NULL) ;//创建内存DC CBitmap bitmap ;
bitmap.Attach(hbitmap) ;memDC.SelectObject(&bitmap) ;
COLORREF clrPixel = memDC.GetPixel(x,y) ;//x,y就是你想要得到的颜色值
memDC.CreateCompatibleDC(NULL) ;//创建内存DC CBitmap bitmap ;
bitmap.Attach(hbitmap) ;memDC.SelectObject(&bitmap) ;
COLORREF clrPixel = memDC.GetPixel(x,y) ;//x,y就是你想要得到的颜色值
即然了有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;
谢谢你写的例子,但我调不通,还在调试。 好像是lpbits这个参数没取到值。
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;