关于8位位图的一些疑问:
(1)8位位图的R G B分量各占几位?
(2)如何取出各个R  G B 分量?
 (3)如何找到指定的颜色象素,如我要找到是红色的象素,该如何操作?
(4)找到指定的象素后,如何替换成另一种颜色的象素,就象一副图象中所有的红色替换成蓝色?解决问题后,另开贴100分答谢

解决方案 »

  1.   

    1. 记得8位一般是RGB232。
    不过有时8位是指256色调色板图,这时图像色彩一般就是RGB888了。2. 建议去学下位操作,&, |, <<, >>3. 每个象素色和你指定的颜色比一下就找到了。4. …………
      

  2.   

    (1)8位位图的R G B分量各占几位?     8位位图的像素值里面不包含R G B分量(2)如何取出各个R  G B 分量?
        
         8位位图的像素值的含义是调色板的指针。例如:某一个像素值是63,你找到调色板中的第64项(第一项的值为0,所以值为63是第64项),读出这一项的RGB值即可,这里的RGB值各占1个字节。
    (3)如何找到指定的颜色象素,如我要找到是红色的象素,该如何操作?
       
         先查询调色板,从第一项开始,哪一项的颜色值等于红色,就返回哪一项的编号。这样得到红色的索引值。然后搜索图像的数据区,像素值等于红色的索引值的就是红色像素。
    (4)找到指定的象素后,如何替换成另一种颜色的象素,就象一副图象中所有的红色替换成蓝色?
       
         如果你单单是为了替换像素颜色,根本无须进行像素查找的工作。直接改掉调色板中的红色一项的RGB值,整个图像中的原来红色像素就都是新颜色了,而且像素值不变。
      

  3.   

    (1)8位图的数据区实际上是个索引表,引到调色板 .RGB各占8位,24位就不要创建调色板了
    (2)取R分量:GetRValue(GetPiex(i,j))     想深入研究就建个CDib类吧,取出某个点的数据值,在修改,刷新,就可,