立即注册 登录
VB爱好者乐园(VBGood) 返回首页

admin6677的个人空间 http://blog.vbgood.com/?110914 [收藏] [复制] [分享] [RSS]

日志

原来读取PNG的时候,32bit的要再加上Alpha通道的

热度 1已有 967 次阅读2014-4-26 09:51 |个人分类:源代码

virtual HRESULT __stdcall OnDecodeComplete (HRESULT hrStatus)
    {
        if (m_dib.bpp!=32)

              return S_OK;

        // windows规定要把alpha值运算到RGB通道上,参看MSDN的alphablend函数说明

            for (int i = 0; i < m_dib.width; ++i)
            {
                for (int j = 0; j < m_dib.height; ++j)
                {

                    p[0] = p[0] * p[3] / 256;
                    p[1] = p[1] * p[3] / 256;
                    p[2] = p[2] * p[3] / 256;
                }
            }
        return S_OK;
    }


路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

发表评论 评论 (2 个评论)

回复 acme_pjz 2014-4-27 19:56
   对啊,AlphaBlend用的是 Premultiplied alpha 啊
回复 admin6677 2014-4-30 09:59
acme_pjz:    对啊,AlphaBlend用的是 Premultiplied alpha 啊
我原来不知道的,在用PNG做界面时。怎么老透明不了,原来就是这样的原因

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-9-19 02:36

VB爱好者乐园(VBGood)
返回顶部