我有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 );
}