对于16位的图像,有可能是采用调色板和索引的方式。如果调色板没有设置正确的话,自然会出现上述的问题。
不过(我只用过DOS下BC的getimage),不知道GetImage的格式。

解决方案 »

  1.   

    如何正确设置调色板?在DOS和WINDOWS下都是640*480*65536色,默认调色板不一样吗?
      

  2.   

    16位的图像照说有可能是索引方式(因为RGB一般是24位),如果是这样的话,则应该在使用GetImage时把当时的调色板记录下来,具体请参看DOS下的GetPallete函数(好像是这个吧,太久没用了)。将调色板记录好后,利用读出的文件数据查出对应颜色的RGB值,然后使用RGB宏查出对应当前DC的颜色值,再将这个值赋给Pixels属性。如果GetImage使用的是RGB的不等长结构,建议先搞清楚它的RGB各个位的分配情况(有时候G通道会比RB占用的位数多,因为人眼对绿色比较敏感),然后将其分别读出来。按照比例换算到一个字节的长度后使用Windows API的RGB宏来写进TBitmap中再存盘,这样就能获得正确的结论。这个问题不算难,但是比较烦,比较烦......
      

  3.   

    可能关键在这里“使用RGB宏查出对应当前DC的颜色值”,具体如何对应?请给简单的代码让我测试一下