我有一个24位BMP图像,但是当我使用Bitmap对象将它加载到我的掌上电脑上并执行GetPixel时,它会返回我稍微错误的RGB值。我想它会在运行时将其转换为16位。使用LockBits并直接使用位图数据时,我得到相同的结果。有没有办法在.NET Compact Framework中为24位BMP的给定像素获取精确的RGB值?
提前致谢。
答案 0 :(得分:0)
我不确定我会说什么,但如果它有16位颜色,它应该有一个颜色调色板来表示完整的真实颜色(32位)。在这种情况下,您获得的“颜色”(16位像素值)是调色板的索引。 Bitmap对象有一个Palette属性,也许值得一看,运行一些测试,看看我说的是否有意义!
此致
答案 1 :(得分:0)
我敢打赌,无论你加载了Bitmap,它都会被转换为DDB,并且驱动程序设置为使用24位颜色,这就是你最终的结果。如果要保持32位颜色,则需要使用DIB。对于Compact Framework,这意味着使用流构造函数(see this blog entry for more on DDB/DIB in the CF)加载图像。