请教alpha通道实现透明度的原理
最近在研究BMP位图的格式,希望不利用任何已封装好的类,而是自己从底层开始探究,自己设计一个类来对BMP位图进行解析。
在研究到32位BMP的时候,接触到了Alpha通道的概念,查了下资料,了解到这个Alpha通道值是用于设置图片透明度的。
对于32位的BMP,每个像素的数据就占了4字节。
用UE打开,假设在文件中以小端法存放数据:55 66 77 88
对应过来就是Blue 55, Green 66,Red 77, Alpha 88。
我在实现绘制的时候,用的SetPixel(dc, x, y, RGB(r, g, b))这个函数,但是这个函数只和RGB值相关,也就是没有透明度的概念。
我想知道,从最底层出发,有没有专门设置像素点透明度的函数。
另外,看到有一个帖子上说:
透明度的原理是:
X = (X*Alpha +127) / 255;
其中X可以是R,G,B
对R,G,B,A都做如上计算处理,就实现了Alpha通道的透明度实现。
那么,如果以上算法属实,是不是就说明了其实每一个像素的表示,只与RGB值有关,所谓的Alpha通道透明,只是提供了一种算法(上面所述的算法),来改变RGB的值,达到所谓“透明”的效果呢?
由于对“透明”概念的理解还太模糊,希望能得到比较全面的回答,谢谢~