青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 37, comments - 55, trackbacks - 0, articles - 0
  C++博客 ::  :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

圖形學(xué)中,Alpha指的是除了顏色的三個(gè)分量(RGB)外的第四個(gè)分量,透明度
一個(gè)真彩色的像素由四個(gè)分量組成,RGBA
Alpha 的值在 0 到 1 之間,0表示完全透明,1 表示完全覆蓋
 
圖像A 和 圖像B 組合而成的圖像為 C
A: (R_Value_A, G_Value_A, B_Value_A, Alpha_A)
B: (R_Value_B, G_Value_B, B_Value_B, Alpha_B)
混合后的C 顏色為

R_Value_C = R_Value_A * Alpha_A + R_Value_B * Alpha_B
G_Value_C = G_Value_A * Alpha_A + G_Value_B * Alpha_B
B_Value_C = B_Value_A * Alpha_A + B_Value_B * Alpha_B


具體實(shí)現(xiàn)代碼:

/**
 * alpha 值的范圍為 0 ~ 255
 */

inline COLORREF AlphaPixel(UINT alpha, COLORREF clr1, COLORREF clr2)
{
    
double k = (double)alpha / 256.0;
    
double reverse_k = 1.0 - k;
    BYTE r 
= BYTE( GetRValue(clr2) * k + GetRValue(clr1) * reverse_k );
    BYTE g 
= BYTE( GetGValue(clr2) * k + GetGValue(clr1) * reverse_k );
    BYTE b 
= BYTE( GetBValue(clr2) * k + GetBValue(clr1) * reverse_k );
    
return RGB(r, g, b);
}


透明度 
50%

 
for(int i = 0; i < size.cx; i++)
 
{
  
for ( int j = 0; j < size.cy; j++ )
  
{
   pDC
->SetPixel(i, j, AlphaPixel(255 / 2, RGB(255255255), dc.GetPixel(i, j)) );
  }
// for j
 }
// for i


如此算法,如果是1024 * 768 的圖,就很慢了,需要想辦法優(yōu)化

餓了,先去吃飯?jiān)傺芯縹

吃完飯,繼續(xù)

windows已經(jīng)提供了 實(shí)現(xiàn)alpha混合的API
BOOL AlphaBlend(
HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest,  int nHeightDest,
HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc,
BLENDFUNCTION blendFunction);
前面十個(gè)參數(shù)不用說(shuō)了,主要在最后一個(gè)參數(shù)

typedef struct _BLENDFUNCTION
{
    BYTE   BlendOp;                    // BlendOp字段指明了源混合操作,但只支持AC_SRC_OVER,即根據(jù)源alpha值把源圖像

疊加到目標(biāo)圖像上
                                             // OpenGL的alpha混合還支持其他的方式,如常量顏色源。
    BYTE   BlendFlags;                // 保留字段,必須是 0
    BYTE   SourceConstantAlpha; //
    BYTE   AlphaFormat;             // 0表示常量alpha值,AC_SRC_ALPHA表示每個(gè)像素有各自的alpha通道。
} BLENDFUNCTION;

BLENDFUNCTION結(jié)構(gòu)控制源和目標(biāo)位圖的混合方式

如果AlphaFormat字段為0,源位圖中的所有像素使用同樣的常量alpha值,即SourceConstantAlpha字段中的值,該值實(shí)際上是0和255

,而不是0和1。這里0表示完
全透明,255表示完全不透明。目標(biāo)像素以255-SourceConstantAlpha值作為alpha值。
如果AlphaFormat字段的值是AC_SRC_ALPHA,源設(shè)備表面的每個(gè)像素必須有各自的alpha通道。即,必須是32-bpp的物理設(shè)備上下文

,或是選中了32-bpp DDB和DIB
段的內(nèi)存設(shè)備上下文。這些情況下,每個(gè)源像素有4個(gè)8位通道:紅、綠、藍(lán)和alpha。每個(gè)像素的alpha通道和SourceConstantAlpha

字段一起用于把源和目標(biāo)混合
起來(lái)。實(shí)際用于計(jì)算的運(yùn)算式如下:
Tmp.Red   = Src.Red   * SourceConstantAlpha / 255;
Tmp.Green = Src.Green * SourceConstantAlpha / 255;
Tmp.Blue  = Src.Blue  * SourceConstantAlpha / 255;
Tmp.Alpha = Src.Alpha * SourceConstantAlpha / 255;
Beta      = 255 – Tmp.alpha;
Dst.Red   = Tmp.Red   + Round((Beta * Dst.Red  )/255);
Dst.Green = Tmp.Green + Round((Beta * Dst.Green)/255);
Dst.Blue  = Tmp.Blue  + Round((Beta * Dst.Blue )/255);
Dst.Alpha = Tmp.Alpha + Round((Beta * Dst.Alpha)/255);

如果AlphaFormat字段的值是AC_SRC_ALPHA 的情況還沒(méi)搞懂是什么意思

Feedback

# re: [Z]Alpha通道實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

2008-09-19 16:36 by lonkil
去掉浮點(diǎn),alpha直接用0-255處理;
乘除用移位操作;
速度可能會(huì)快一點(diǎn)。

# re: [Z]Alpha通道實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

2008-09-19 17:49 by lonkil
我以前寫(xiě)的一個(gè)16位的混合。

//16位單像素的Alpha混合
GUI_COLOR PixelAlpha_565(U16 sour, U16 desc, U8 nAlpha )
{
U32 R=0,G=0,B=0,R1=0,G1=0,B1=0;
GUI_COLOR clr=0,clr1=0;
static int n=0;
//提取GUI_COLOR的RGB
R = ( sour >> 11 ) & 0x1f;
G = ( sour >> 5 ) & 0x3f;
B = sour & 0x1f;

R1 = ( desc >> 11 ) & 0x1f ;
G1 = ( desc >> 5 ) & 0x3f;
B1 = desc & 0x1f;

//混合
R = (( ( R - R1 ) * nAlpha ) >> 8 ) + R1;
G = (( ( G - G1 ) * nAlpha ) >> 8 ) + G1;
B = (( ( B - B1 ) * nAlpha ) >> 8 ) + B1;

clr = ( B << 19 ) | ( G << 10 ) | R<<3;

return clr;
}

其實(shí)混合算法優(yōu)化還是值得研究的,如果不在windows下就沒(méi)有AlphaBlend可用了。

# re: [Z]Alpha通道實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

2008-09-19 20:30 by 沒(méi)畫(huà)完的畫(huà)
感謝 lonkil 提出的建議.

# re: [Z]Alpha通道實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

2008-09-19 21:29 by 陳梓瀚(vczh)
用匯編,將一個(gè)寄存器的四個(gè)字節(jié)XXXX分別寫(xiě)成0R0G,R和G就能一起算了。如此類推。

好象是4年前吧,我用delphi實(shí)現(xiàn)過(guò)一個(gè),爆快。

# re: [Z]Alpha通道實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

2008-09-19 21:30 by 陳梓瀚(vczh)
AlphaBlend是不能用的,他那個(gè)blend function不是完整的,需要事先做點(diǎn)兒事情。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合电影| 国产自产精品| 亚洲午夜一区二区三区| 欧美在线观看www| 精品69视频一区二区三区| 久久久91精品国产| 91久久精品日日躁夜夜躁欧美 | 国产精品网站一区| 欧美夜福利tv在线| 欧美国产三区| 亚洲性xxxx| 激情小说亚洲一区| 欧美精品在线观看播放| 亚洲欧美一区二区在线观看| 久久尤物视频| 一区二区三区产品免费精品久久75| 国产精品麻豆va在线播放| 久久er精品视频| 亚洲美女av网站| 久久精品日韩| 一本色道久久99精品综合| 国产亚洲综合在线| 欧美精品aa| 欧美中在线观看| 日韩视频免费大全中文字幕| 久久国产一区二区三区| 日韩午夜免费| 狠狠色伊人亚洲综合网站色| 欧美日韩午夜视频在线观看| 久久久精品午夜少妇| 亚洲大胆女人| 国产精品海角社区在线观看| 亚洲激情自拍| 国产免费亚洲高清| 欧美激情1区2区3区| 久久国产精彩视频| 中文日韩电影网站| 亚洲国产精品第一区二区三区| 欧美亚洲一区| 在线亚洲伦理| 亚洲欧洲一区二区在线观看 | aa亚洲婷婷| 国精品一区二区三区| 欧美色播在线播放| 欧美成人午夜激情在线| 欧美呦呦网站| 午夜精品久久| 亚洲视频一二三| 最新中文字幕一区二区三区| 麻豆av一区二区三区久久| 欧美一区二区啪啪| 亚洲欧美日韩国产一区二区| 日韩网站在线| 亚洲人体1000| 91久久精品国产| 亚洲福利视频一区二区| 国产主播一区二区三区四区| 国产欧美日韩在线视频| 国产精品夫妻自拍| 国产精品hd| 国产精品v欧美精品v日本精品动漫| 欧美国产日本在线| 麻豆成人91精品二区三区| 久久久午夜视频| 久久久亚洲高清| 久久女同精品一区二区| 久久夜色精品| 欧美aⅴ99久久黑人专区| 久久综合综合久久综合| 麻豆精品视频在线| 欧美成人福利视频| 欧美成人高清视频| 欧美女同视频| 欧美日韩一二三四五区| 欧美日韩在线视频一区二区| 欧美视频国产精品| 国产精品免费区二区三区观看| 国产精品麻豆欧美日韩ww| 国产精品久久精品日日| 国产精品视频第一区| 国产视频久久网| 樱花yy私人影院亚洲| 亚洲国产美女久久久久| 亚洲欧洲一区二区天堂久久| 一本色道久久综合亚洲精品小说| 在线视频日本亚洲性| 亚洲影视在线播放| 久久精品在线观看| 欧美第十八页| 亚洲剧情一区二区| 亚洲网站啪啪| 久久精品视频va| 欧美.www| 国产精品国产精品国产专区不蜜| 国产日韩欧美综合精品| 在线日韩精品视频| 在线综合亚洲| 久久国产一区二区| 亚洲国产精品久久精品怡红院| 夜夜嗨av一区二区三区中文字幕| 亚洲在线播放| 老司机午夜精品视频| 欧美日韩在线直播| 国产一区二区精品久久99| 亚洲黄色有码视频| 午夜亚洲性色福利视频| 欧美a级片网| 一片黄亚洲嫩模| 久久九九久精品国产免费直播| 欧美岛国激情| 国产亚洲精品v| 99视频一区| 久久全球大尺度高清视频| 亚洲国产免费| 久久er99精品| 欧美午夜剧场| 91久久精品国产91久久| 先锋a资源在线看亚洲| 亚洲国产mv| 欧美一区二区大片| 欧美日韩中文字幕| 在线视频成人| 欧美在线观看网站| 亚洲乱码国产乱码精品精可以看 | 最新日韩中文字幕| 久久精品成人| 国产精品久久久久久久久免费桃花| 在线观看一区二区视频| 小嫩嫩精品导航| 亚洲精品永久免费精品| 久久综合久久综合久久综合| 国产精品一区二区三区免费观看| 亚洲精品社区| 老司机aⅴ在线精品导航| 亚洲视频图片小说| 欧美日韩国产999| 亚洲国产日韩在线| 久久亚洲春色中文字幕| 亚洲在线视频一区| 欧美体内谢she精2性欧美| 亚洲人成在线播放| 免费久久精品视频| 欧美在线视频日韩| 国产精品综合不卡av| 亚洲午夜国产一区99re久久| 91久久久亚洲精品| 欧美xx69| 亚洲精品乱码久久久久久按摩观| 麻豆成人综合网| 久久国产精品99国产| 国产一区二区三区四区在线观看| 午夜在线视频观看日韩17c| 一本一本久久a久久精品综合妖精| 欧美黑人在线观看| 亚洲日韩欧美视频一区| 亚洲第一福利视频| 欧美va亚洲va国产综合| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美成人精精品一区二区频| 久久精精品视频| 韩日在线一区| 久久这里只有| 久久综合国产精品| 亚洲国产mv| 亚洲第一黄色| 麻豆久久久9性大片| 最新国产の精品合集bt伙计| 欧美激情中文不卡| 欧美国产日韩一区二区在线观看| 亚洲国产精品电影| 亚洲精品1区2区| 欧美色图一区二区三区| 午夜激情亚洲| 欧美在线视频导航| 狠狠色综合播放一区二区| 免费一级欧美片在线观看| 女同一区二区| 亚洲午夜高清视频| 香蕉久久夜色精品| 狠狠色丁香久久综合频道| 欧美大学生性色视频| 欧美日韩免费区域视频在线观看| 亚洲影视在线播放| 欧美在线3区| 亚洲日本欧美在线| 一本色道久久综合亚洲精品按摩| 国产精品一区二区久久久久| 久久夜色精品国产亚洲aⅴ| 免费欧美日韩国产三级电影| 亚洲作爱视频| 小嫩嫩精品导航| 亚洲破处大片| 亚洲一区影音先锋| 亚洲第一精品夜夜躁人人爽| 日韩视频一区二区| 国内揄拍国内精品久久 | 亚洲国产精品尤物yw在线观看 | 久久久久国产一区二区三区四区| 久久一区激情| 亚洲欧美日韩国产中文在线|