none
C# Как изменить индекс цвета для определенного пикселя в индексированной картинке? RRS feed

  • Вопрос

  • Сабж. Как изменить цвет по индексу знаю. А вот как изменить индекс у определенного пикселя - вопрос.

    Добавление от 19.05.2010 08:47:

    В общем полная задача выглядит так:
    Есть набор индексированных кадров. Палитра у всех одинаковая, используемые цвета почти одни и те же (ну в каждом кадре присутствует/отсутствует несколько цветов из остальных кадров).
    При загрузке кадров автоматически составляется таблица используемых этими кадрами индексов. Затем с помощью ползунков ко всем используемым цветам в палитре прибавляется/отнимается значение по ргб. Соответственно картинка полностью меняет оттенок. Но тут заковырка. На кадрах есть элементы, которые должны сохранять прежний оттенок. А так как изменение его происходит не банальным перекрашиванием пикселей (картинки то индексированные и SetPixel не работает), а изменением цветов в палитре, то задача оставить часть пикселей не перекрашенными усложняется.
    В моей больной голове возник такой алгоритм:
    1. При добавлении пикселя в список исключений меняем индекс используемого им цвета на другой индекс из палитры, который в этих кадрах не используется вообще. (к примеру, это индекс 57 - 0 0 255 - синий цвет).
    2. Двигаем ползунки, соответственно меняется оттенок всей картинки, кроме пикселей выделенных в синий цвет (ибо его в таблице используемых индексов нет).
    3. При нажатии на кнопку "применить изменения" конвертируем картинку в не индексированный формат, и с помощью SetPixel придаем всем синим пикселям значение соответствующих пикселей из оригинальной картинки.

    Так вот для этой мутотени мне и понадобилось узнать. А как, собственно, менять индекс используемого пикселем цвета?

    П.с. И вообще, может, как всегда есть простое решение и я зря так напрягаюсь?

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:50 MSDN Forums consolidation (От:Visual C#)

Ответы

Все ответы