To use alphablend from your C# application please read: http://blogs.msdn.com/chrislor…ve/2006/04/07/570649.aspx
Sample source code to display BMP files with alpha channel (A8 R8 G8 B8):
Code
- HBITMAP hBmp = SHLoadDIBitmap(L"\\FFSDISK\\Alpha.bmp");
- CDC *pCDC = GetDC();
- HDC hdc = CreateCompatibleDC(pCDC->m_hDC);
- HBITMAP hOldBmap = (HBITMAP) SelectObject(hdc,(HGDIOBJ) hBmp);
- BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
- BOOL bRet = AlphaBlend(pCDC->m_hDC,0,0,200,200,hdc,0,0,200,200,pixelblend);
- SelectObject(hdc,(HGDIOBJ)hOldBmap);
- DeleteObject(hBmp);
- DeleteObject(hOldBmap);
- DeleteDC(hdc);
- ReleaseDC(pCDC);
Sample source code to display PNG files (also with alpha channel):
Code
- HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
- IImagingFactory *pFactory = NULL;
- hr = CoCreateInstance(CLSID_ImagingFactory, NULL,
- CLSCTX_INPROC_SERVER, /*IID_IImagingFactory*/ __uuidof(IImagingFactory) , (void**)&pFactory);
- if (hr == S_OK)
- {
- IImage *pImage = NULL;
- hr = pFactory->CreateImageFromFile(L"\\FFSDISK\\Alpha.png", &pImage);
- if (hr == S_OK)
- {
- CDC *pCdc = GetDC();
- RECT rect;
- rect.top = 0;
- rect.left = 0;
- rect.bottom = 200;
- rect.right = 200;
- hr = pImage->Draw(pCdc->m_hDC, &rect, NULL);
- pImage->Release();
- pImage = NULL;
- ReleaseDC(pCdc);
- }
- pFactory->Release();
- pFactory = NULL;
- }
- CoUninitialize();
DKuhne.