我正在编写一些代码来对 16 位 DICOM 图像(作为 16 位 DIB 加载到内存中)执行窗口调平。我的窗口调平代码是完整的,并且通过生成查找表将源像素值映射到所需的最终像素值来工作。
我不确定如何将此查找表应用于图像。我看到 BITMAPINFO 对象上有一个字段“bmiColors”,类型为 RGBQUAD[]。我已经尝试将我的查找表分配给这个属性,但它似乎没有效果。我也尝试过 SetDIBColorTable 函数,但它似乎也对屏幕输出没有任何影响。
我正在尝试做的事情(在绘画时应用我的查找表,而不是修改像素数据本身)甚至在 GDI 中得到支持,还是实际上应该循环遍历像素数据本身,然后在 blitting 之前一一改变像素值?
我是否使用 BitBlt 或 SetDIBitsToDevice 函数似乎也没有什么不同。他们都倾向于在这里表现相同。
如果这样更容易实现我想要的,我愿意使用 DirectX。我以前没有使用过它,所以如果提供示例代码作为答案会很好。
我的代码对性能非常关键,所以我正在寻找实现这一目标的最快方法,即使它可能涉及更多的工作/代码。