使用GdiAlphaBlend

时间:2014-05-29 03:57:09

标签: c++ mfc

我有2个图像无符号字符数组,它们包含4个通道的RGBA图像,我想对它们进行alphablend,基本上有一个叠加。如何使用GdiAlphaBlend执行此操作。我已经在线观看了,所有样本都没有显示如何使用直接图像。

任何人都可以给我一个样本,或者提供一个我可以看到如何使用它的样本。

提前致谢!

这是代码

dcmem = CreateCompatibleDC(NULL);
bmp = CreateCompatibleBitmap( dcmem, 640, 480 );

bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = 640;
bi.biHeight = 480;
bi.biPlanes = 1;
bi.biBitCount = 32;
bi.biCompression = BI_RGB;
bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) >> 3) * bi.biHeight;

bits = new char[bi.biSizeImage];
    // populate the data with 32 bits data

int ret2 = SetDIBits(dcmem, bmp, 0, bi.biHeight, bits, (BITMAPINFO*)&bi, DIB_RGB_COLORS);

然后在OnDraw中我做了以下事情:

void CAlphaBlendingTestView::OnDraw(CDC* pDC)
{
    CAlphaBlendingTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    BLENDFUNCTION bf;
    bf.SourceConstantAlpha = 255;
    bf.BlendOp = AC_SRC_OVER;
    bf.BlendFlags = 0;
    bf.AlphaFormat = AC_SRC_ALPHA;

    BOOL test = AlphaBlend( pDC->GetSafeHdc(), 0, 0, 640, 480, dcmem, 0, 0, 640, 480, bf ); 
}

0 个答案:

没有答案