通过DIB来转换,如何使用GetDIBits,SetDIBitsToDevice
最好能有具体的代码例子?不是通过BP.PixelFormat := pf4bit;

解决方案 »

  1.   

    这个我觉得是用DIBSECION,比较好,创建一个16位或者4位的DIBSECION,然后用Bitblt函数把原始DIB的数据按照系统内部的转换方式 转成16位或者4位,  但是,这样转的效果可能很差,要效果好,则需要自己按一定算法计算新的图像数据,16位的好搞,4位色的一个是要抖动,一个是调色板的获取,还有一个问题就是扫描行问题要注意。这些我是用VB坐的,所以只好说个思路吧。
      

  2.   

    这些是API函数,delphi,vb,vc都可以用了,不过我用的时候老是有问题,研究的时间也不长
    所以想能有个具体的delphi例子参考下
    先谢了
    自己计算图像数据的话是每个象素点都轮流计算一遍?
      

  3.   

    通过DIB 可以取得THBITMAP 和调色板,用来创建位图,即可对位图进行操作
      

  4.   

    通过移位运算好像也可以把,不过BP.PixelFormat := pf4bit;好像也是这样算的吧,