11/08/2014
Преобразование цветов между RGB и AutoCAD ACI в ObjectARX
Преобразование цвета в RGB к ближайшему эквивалентному индексу в палитре индексов AutoCAD (ACI) может быть сделано при помощи методов loopUpACI и lookUpRGB, реализованных в классе AcCmEntityColor.
Следующий пример использует метод lookUpRGB() для конвертации индекса цвета 47 в соотвествующий цвет в RGB, а затем используя полученный RGB найдем ближайший индексный цвет при помощи метода lookUpACI()
А вот и код:
Код - C++: [Выделить]
- AcCmEntityColor cEntityColor;
- Adesk::UInt8 iIndex = 47;
- // Получаем эквивалент в RGB
- Adesk::UInt32 nValue = cEntityColor.lookUpRGB(iIndex);
- Adesk::UInt8 blue, green, red;
- // Теперь выполним обратное преобразование, первые 8 бит - голубой
- blue = nValue;
- // сдвигаем nValue вправо и для получения зеленого
- nValue = nValue >> 8;
- // получаем зеленый
- green = nValue;
- // еще сдвигаем вправо на 8 бит для получения красного
- nValue = nValue >> 8;
- // получаем красный
- red = nValue;
- AcCmColor cColor;
- cColor.setRGB(red, green, blue);
- // Получаем индексный цвет (ACI) для RGB
- Adesk::UInt8 aci = AcCmEntityColor::lookUpACI(
- cColor.red(),
- cColor.green(),
- cColor.blue()
- );
Обсуждение: http://adn-cis.org/forum/index.php?topic=905
Опубликовано 11.08.2014