CAD中经常使用的事索引颜色,它和RGB颜色存在一定的转换关系,通过一定的方法可以进行转换,以下就是转换函数。
需要注意的是:不同版本的CAD索引颜色对应的RGB颜色可能会不一样,使用时要有所考虑。
int GetCadIndexFromRgb(COLORREF color)
{
long mindst = 2147483647L;
int minndx = 0;
long red = GetRValue(color);
long green = GetGValue(color);
long blue = GetBValue(color);
for (int i = 1; i < 255; i++) {
long acirgb = acdbGetRGB(i);
long r = GetRValue(acirgb);
long g = GetGValue(acirgb);
long b = GetBValue(acirgb);
long dst = abs(r - red) + abs(g - green) + abs(b - blue);
if (dst < mindst) {
minndx = i;
mindst = dst;
}
}
return minndx;
}
COLORREF GetRgbFromCadIndex(int colorIndex)
{
if (colorIndex < 0 || colorIndex > 255)
{
return 0;
}
WORD LOW = LOWORD(acdbGetRGB(colorIndex));
WORD HIG = HIWORD(acdbGetRGB(colorIndex));
BYTE R = LOBYTE(LOW);
BYTE G = HIBYTE(LOW);
BYTE B = LOBYTE(HIG);
return RGB(R, G, B);
}