怎样判断BMP是否是256色?(程序)
解决方案 »
- 谁有画二维图的ActiveX控件或好点的画图的类
- 关于matlab与vc的接口
- 一个hook的奇怪问题。。。
- 如何让1个float类型限制只显示2位数?
- 可以将windows 2000 pro 和windows XP 作为RAS服务器吗?怎样做?
- 关于字符串时间到 COleDateTime 的转化?
- 各位高手,求救!!在一个线程中使用CAsyncSocket类的对象,为什么不能触发事件???在线等待
- 求助,在对话框,添加 Rich Edit 一直报错,该如何处理?
- 请问在两个程序之间如何通信?
- 求要图示控件,比如柱状图显示之类的。
- 新手求助,一个简单程序
- Tcp包头的总长度是多少,结构是怎么样的,挺简单的吧
*
* 函数名称:
* DIBNumColors()
*
* 参数:
* LPSTR lpbi - 指向DIB对象的指针
*
* 返回值:
* WORD - 返回调色板中颜色的种数
*
* 说明:
* 该函数返回DIB中调色板的颜色的种数。对于单色位图,返回2,
* 对于16色位图,返回16,对于256色位图,返回256;对于真彩色
* 位图(24位),没有调色板,返回0。
*
************************************************************************/
WORD WINAPI DIBNumColors(LPSTR lpbi)
{
WORD wBitCount; // 对于Windows的DIB, 实际颜色的数目可以比象素的位数要少。
// 对于这种情况,则返回一个近似的数值。
// 判断是否是WIN3.0 DIB
if (IS_WIN30_DIB(lpbi))
{
DWORD dwClrUsed;
// 读取dwClrUsed值
dwClrUsed = ((LPBITMAPINFOHEADER)lpbi)->biClrUsed;
if (dwClrUsed != 0)
{
// 如果dwClrUsed(实际用到的颜色数)不为0,直接返回该值
return (WORD)dwClrUsed;
}
} // 读取象素的位数
if (IS_WIN30_DIB(lpbi))
{
// 读取biBitCount值
wBitCount = ((LPBITMAPINFOHEADER)lpbi)->biBitCount;
}
else
{
// 读取biBitCount值
wBitCount = ((LPBITMAPCOREHEADER)lpbi)->bcBitCount;
}
// 按照象素的位数计算颜色数目
switch (wBitCount)
{
case 1:
return 2; case 4:
return 16; case 8:
return 256; default:
return 0;
}
}
DWORD bcSize;
WORD bcWidth;
WORD bcHeight;
WORD bcPlanes;
WORD bcBitCount;
} BITMAPCOREHEADERbcBitCount是8,则为256色