Обработка изображений в C - обработка 256-цветного растрового изображения
Я использую Borland Turbo C и графический интерфейс Borland.
У меня есть два вопроса:
Я должен обработать 256-цветное растровое изображение. Это сложно обрабатывать с помощью драйвера EGAVGA, поэтому я решил использовать SVGA драйвер. Это работает нормально, но когда я преобразую изображение в оттенки серого, вместо того, чтобы показывать только изображение в оттенках серого, все окно переходит в режим оттенков серого. Есть ли способ изменить цветовую палитру для конкретной области, используя
outp(0x03c8, data)
а такжеoutp(0x03c9, data)
функции?Функции мыши работают нормально в режиме EGAVGA, но курсор не виден в режиме SVGA. Даже мышь функционирует. Как я могу создать собственный курсор мыши для режима SVGA в 256 цветах? У меня есть коды для создания пользовательского указателя мыши в режиме EGAVGA с использованием прерывания 0x10, но он не работает в режиме SVGA?
1 ответ
В режимах видео с палитрой записи палитры влияют на весь экран. Если вы измените какой-либо индекс, все пиксели на экране с этим индексом изменятся, независимо от того, принадлежат они вашему изображению или нет.
Если ваше изображение будет делиться экраном с другими, и вы хотите, чтобы это изображение было единственным, которое превращается в оттенки серого, вы должны выделить некоторые записи палитры для эксклюзивного использования вашим изображением, поэтому их изменение не повлияет на другие графические элементы. на вашем экране.
В Windows и X-Window, если моя память хорошо работает, весь экран будет иметь цвета вашей палитры, когда ваше оконное приложение будет в фокусе. Если нет, он вернется к системной палитре, и ваши окна и их содержимое будут отображаться "странно".