我正在写一些代码来执行16位DICOM图像(作为16位DIB在内存中加载)进行窗口调整。我的窗口调平代码是完整的,并通过生成查找表将源像素值映射到所需的最终像素值。在Win32 DIB中使用颜色查找表的正确方法是什么?
什么我不知道的是如何将这种查找表应用到图像。我看到BITMAPINFO对象在其'bmiColors'上有一个类型为RGBQUAD []的字段。我试着将查找表分配给这个属性,但它似乎没有效果。我也尝试了SetDIBColorTable函数,但它对屏幕输出似乎也没有任何影响。
是我正在尝试做的(在绘制时应用我的查找表而不是修改像素数据本身)甚至在GDI中支持,或者实际上应该是通过像素数据本身循环更改像素值blitting之前的一个?
它也似乎不有所作为我是否使用的BitBlt或功能的SetDIBitsToDevice。他们在这里倾向于表现一致。
我愿意使用DirectX的,如果这样做更容易才达到我想要的东西。我之前没有使用过它,所以如果以答案的形式提供示例代码将会很好。
我的代码是非常关键的性能,所以我在寻找实现这一目标的最快捷的方法,即使它可能涉及更多的努力/代码。
感谢那个狮子座。我已经编写了一些代码来枚举像素缓冲区,并使用查找表填充新缓冲区,以在此过程中执行颜色转换。在我看来,这似乎是GDI通过在输出设备上下文中配置调色板或类似的东西来支持的操作,因此是一个问题。 – Josh 2011-01-11 14:38:20