小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

RGB顏色與BGR顏色的轉(zhuǎn)換問(wèn)題

 oskycar 2012-04-06

今天在解決一個(gè)bug的時(shí)候發(fā)現(xiàn)顏色始終對(duì)不上,調(diào)試……,發(fā)現(xiàn)問(wèn)題,API得到的是BGR顏色,我要把他轉(zhuǎn)換成RGB顏色。

先說(shuō)名一下BGR顏色,像素的顯示格式分為4種:

PAL_RGB, PAL_BGR, PAL_MASKED, PAL_INDEXED,

PAL_RGB: 他的類(lèi)型是unsigned long, 格式 0x00BBGGRR, 他和PALETTEENTRY結(jié)構(gòu)是一樣的。

PAL_BGR: 他的類(lèi)型是unsigned long, 格式 0x00RRGGBB, 他和RGBQUAD結(jié)構(gòu)是一樣的。

PAL_MASKED: 主要是15和16bpp。也可以 24,32.

PAL_INDEXED: 1,2,4或者8 bpp。

下面就來(lái)說(shuō)一下怎么相互轉(zhuǎn)換。一開(kāi)始的時(shí)候想用按位運(yùn)算的辦法,本人比較懶,不想寫(xiě)那么多代碼,后來(lái)發(fā)現(xiàn)一個(gè)簡(jiǎn)單的辦法。^_^ ,從MSDN上看到的。代碼如下:

unsigned long dstValue = srcValue;
((unsigned char *)(&dstValue))[0] = ((unsigned char *)(&srcValue))[2];
((unsigned char *)(&dstValue))[2] = ((unsigned char *)(&srcValue))[0];
大家可看出來(lái)其實(shí)是把他們先轉(zhuǎn)換成Char數(shù)組在進(jìn)行互換的。很方便。我測(cè)試過(guò)沒(méi)有問(wèn)題。這個(gè)方法適用于RGB和BRG之間的相互轉(zhuǎn)換。
RGB轉(zhuǎn)化成MASKED:
unsigned long dstValue =
  ((( srcValue << 24 ) >> anDstShift[0] ) & aDstMask[0] ) |
  ((( srcValue << 16 ) >> anDstShift[1] ) & aDstMask[1] ) |
  ((( srcValue << 8  ) >> anDstShift[2] ) & aDstMask[2] );
 
MASKED 轉(zhuǎn)換成RGB:
unsigned long ulRed   = (srcValue & aSrcMask[0]) << anSrcShift[0];
unsigned long ulGreen = (srcValue & aSrcMask[1]) << anSrcShift[1];
unsigned long ulBlue  = (srcValue & aSrcMask[2]) << anSrcShift[2];

ulRed   |= ulRed   >> anSrcBits[0];
ulGreen |= ulGreen >> anSrcBits[1];
ulBlue  |= ulBlue  >> anSrcBits[2];

unsigned long dstValue =
  ((ulRed   >> 24)) |
  ((ulGreen >> 16) & 0x0000ff00) |
  ((ulBlue  >>  8) & 0x00ff0000);
其他的不常用就不寫(xiě)了。有不明白的看http://msdn2.microsoft.com/en-us/library/aa927915.aspx
看不懂英文的給我留言,我給他翻譯。估計(jì)沒(méi)有人會(huì)留言了。hoho

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多