Как преобразовать 256 цветов в наиболее подходящий цвет RGB?
Я обновляю программное обеспечение с графическим интерфейсом на основе SVGA на Qt. Одной из проблем является преобразование цветов. Поскольку SVGA использует 256-цветовую модель, а Qt использует цветовую модель RGB (на самом деле она поддерживает и другие модели; но я использую RGB). Поэтому мне нужно линейное отображение 256 цветов в эквивалентный цвет RGB.
Есть ли формула для этого?
Примечание: я использую C/C++ в качестве языка сборки.
1 ответ
Вы должны решить, какая палитра используется. Это должно быть закодировано в приложении. Палитра - это массив из 256 значений RGB. Чтобы использовать цвет, вы используете индекс массива (один байт). Получив информацию о палитре, вы получите линейное отображение, к которому вы стремитесь.
В режимах VGA есть палитра по умолчанию. Большинство программ устанавливают свои собственные, но в любом случае информация о палитре находится на графической карте. Вы должны быть в состоянии запросить это, но я не могу помочь вам с этим. В последний раз я писал код для этого примерно 15 лет назад, когда мы все знали, в какие адреса памяти записывать различные графические операции.
Другой способ узнать палитру: если вы можете изменить это приложение для записи группы пикселей, просто нарисуйте блок 16x16, содержащий все 256 значений цвета, получите скриншот и затем восстановите палитру из этого.