半透明贴图原理

半透明效果就是将前景图与背景图像素颜色的混合,要达到某一程度透明颜色的效果,须将前景图与背景图彼此对应像素的颜色依某一比例来进行调配,这个比例就是"不透明度".由此得出的一个简单公式:半透明图色彩=前景图色彩X不透明度+背景图色彩X(1-不透明度)

位图的宽和高(代表宽有多少像素和高有多少像素),那么这张位图就共有宽X高个像素,以24bits色彩的位图来说,它的每个像素是以24bits来表示颜色的,其中B(蓝色),G(绿色),R(红色)三原色各占8位(即一个字节),那么一个像素就占用3个字节(每一行像素就会占宽X3个字节).

Windows API中定义的位图结构(BITMAP)

typedef struct tagBITMAP{
    LONG bmType;  //位图类型,设置为0
    LONG bmWidth;  //位图宽度
    LONG bmHeight;  //位图高度
    LONG bmWidthBytes; //每一行宽所占字节数
    WORD bmPlanes;  //颜色平面数
    WORD bmBitsPixel; //像素的位数
    LPVOID bmBits;  //位图内存指针
}BITMAP;

取得位图结构的函数

GetObject(HBITMAP bitmap,       //GDI对象
            sizeof(BITMAP),     //结构大小
            BITMAP &bit);       //结构变量

取得位图颜色值存储在数组中(每一个像素以BGR的形式会占用3个数组元素)

GetBitmapBits( HBITMAP ,    //位图
                LONG,       //取得的Byte数 (高X宽)
                LPVOID );   //存储的数组指针

重设位图颜色

LONG SetBitmapBits(HBITMAP,  //位图
                    DWORD ,  //颜色数组大小
                    CONST VOID ); //数组指针

GetDIBits函数
BITMAPINFO结构

赞(0) 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

    暂无评论...