Обработка изображений в C - обработка 256-цветного растрового изображения

Я использую Borland Turbo C и графический интерфейс Borland.

У меня есть два вопроса:

  1. Я должен обработать 256-цветное растровое изображение. Это сложно обрабатывать с помощью драйвера EGAVGA, поэтому я решил использовать SVGA драйвер. Это работает нормально, но когда я преобразую изображение в оттенки серого, вместо того, чтобы показывать только изображение в оттенках серого, все окно переходит в режим оттенков серого. Есть ли способ изменить цветовую палитру для конкретной области, используя outp(0x03c8, data) а также outp(0x03c9, data) функции?

  2. Функции мыши работают нормально в режиме EGAVGA, но курсор не виден в режиме SVGA. Даже мышь функционирует. Как я могу создать собственный курсор мыши для режима SVGA в 256 цветах? У меня есть коды для создания пользовательского указателя мыши в режиме EGAVGA с использованием прерывания 0x10, но он не работает в режиме SVGA?

1 ответ

Решение

В режимах видео с палитрой записи палитры влияют на весь экран. Если вы измените какой-либо индекс, все пиксели на экране с этим индексом изменятся, независимо от того, принадлежат они вашему изображению или нет.

Если ваше изображение будет делиться экраном с другими, и вы хотите, чтобы это изображение было единственным, которое превращается в оттенки серого, вы должны выделить некоторые записи палитры для эксклюзивного использования вашим изображением, поэтому их изменение не повлияет на другие графические элементы. на вашем экране.

В Windows и X-Window, если моя память хорошо работает, весь экран будет иметь цвета вашей палитры, когда ваше оконное приложение будет в фокусе. Если нет, он вернется к системной палитре, и ваши окна и их содержимое будут отображаться "странно".

Другие вопросы по тегам