Я пишу некоторый код для выравнивания окон на 16-битном DICOM-изображении (которое загружается в память как 16-битный DIB).Мой код выравнивания окон завершен и работает путем генерации справочной таблицы для сопоставления исходных значений пикселей с желаемыми конечными значениями пикселей.
В чем я не уверен, так это в том, как применить эту таблицу поиска к изображению.Я вижу, что объект BITMAPINFO имеет поле 'bmiColors', типа RGBQUAD [].Я попытался присвоить таблицу поиска этому свойству, но, похоже, это не дает никакого эффекта.Я также попробовал функцию SetDIBColorTable, но она, похоже, тоже не влияет на вывод на экран.
Это то, что я пытаюсь сделать (применить мою таблицу поиска при рисовании, а не изменять пиксельсами данные) даже поддерживаются в GDI, или же фактически предполагается, что они фактически перебирают сами пиксельные данные, изменяя значения пикселов одно за другим перед блиттингом?Функции BitBlt или SetDIBitsToDevice.Они оба, как правило, ведут себя одинаково.
Я открыт для использования DirectX, если было бы легче достичь того, чего я хочу.Я не использовал его раньше, хотя пример кода был бы хорош, если бы он предлагался в качестве ответа.
Мой код очень критичен по производительности, поэтому я ищу самый быстрый способ достичь этого, дажеесли это может потребовать больше усилий / кода.