一个形如#XXXXXX(X是一个十六进制数)的值最多可表示2^24种颜色,而多数电
脑的颜色质量只设置成16位(这可以通过一些网站统计可以看出,256色与2^32色均
不多,最多的就是2^16和2^24色),16位最多可表示2^16种色,后者可表示范围仅是
前者的1/256。我们知道,当电脑设置的颜色质量达不到指定指标时,需要通过一种
叫做“抖动”的技术模拟指定颜色,而据说这种“抖动”技术又需要大量的CPU运算
(至于多大运算量小弟也不知道),所以一般应避免出现“抖动”。
现在就出现问题了,我们在做程序界面或网页时,肯定要涉及到配色问题。怎样
才能确定一个形如#XXXXXX的颜色值是否在16位颜色的范围内(要照顾大多数人的利
益嘛)?是否在数值上有一定的规律?
请各位大虾指点一二。谢谢!
脑的颜色质量只设置成16位(这可以通过一些网站统计可以看出,256色与2^32色均
不多,最多的就是2^16和2^24色),16位最多可表示2^16种色,后者可表示范围仅是
前者的1/256。我们知道,当电脑设置的颜色质量达不到指定指标时,需要通过一种
叫做“抖动”的技术模拟指定颜色,而据说这种“抖动”技术又需要大量的CPU运算
(至于多大运算量小弟也不知道),所以一般应避免出现“抖动”。
现在就出现问题了,我们在做程序界面或网页时,肯定要涉及到配色问题。怎样
才能确定一个形如#XXXXXX的颜色值是否在16位颜色的范围内(要照顾大多数人的利
益嘛)?是否在数值上有一定的规律?
请各位大虾指点一二。谢谢!
{
LONG i;
BYTE *pSrc = pSrcBuffer;
WORD *pDst = (WORD*)pDesBuffer; for (i=0; i<pixelnums; i++, pDst++)
{
*pDst = *pSrc++ >> 3;
*pDst <<= 6;
*pDst |= *pSrc++ >> 2;
*pDst <<= 5;
*pDst |= *pSrc++ >> 3;
}
}这是我这里用来24转16的代码,希望对你有帮助