#define BGR2RGB(x)  ((((x) & 0x000000ff) << 16) | (((x) & 0x00ff0000) >> 16) | ((x) & 0x0000ff00))         ///3个颜色按位或是什么意思???x为一个获取的颜色。这个是在读取mif文件的时候。对文件里的钢笔的颜色进行的处理。不知道为什么。这个宏表示的是什么意思?????

解决方案 »

  1.   

    BGR2RGB顾名思义是要把BGR格式转为RGB形式的
      

  2.   

    问一下关于c#中gdi+的。在gdi+的是argb的。把BGR转化为argb的改怎么写。我只的是c#的语言。还有#define BGR2RGB(x)  ((((x) & 0x000000ff) < < 16) ¦ (((x) & 0x00ff0000) >> 16) ¦ ((x) & 0x0000ff00)) 在c#里应该怎么写?
      

  3.   

    get一个RGB色值,再用getrgbr()getrgbg()getrgbb()函数得到数值;使用宏;再看;有一个实际例子看起来就简单了。
      

  4.   


    把原本BGR格式存储的颜色值转换为RGB格式
    R: Red   0~255
    G: Green 0~255
    B: Blue  0~255
    由于每个分色只有8位,它们可以用1个32bit的整形来表示。BGR格式中 
    B(lue)在内存中的占用32bit整形的  16~23 bit
    G(reen)                          8~15 bit
    R(ed)                            0~7 bitRGB格式中
    R(ed) 在内存中的占用32bit整形的  16~23 bit
    G(reen)                          8~15 bit
    B(lue)                           0~7 bit这个宏实际上是把这个表示颜色的整形数的 0~7bit与16~23bit的值互换。