richedit 输入法输入表情出现黑色背景的解决办法

来源:互联网 发布:java 多用户 博客 编辑:程序博客网 时间:2024/05/17 01:26

    造成此问题的原因是另存为的时候,GDI+的Gdiplus::Bitmap::FromHBITMAP 或者 Gdiplus::Bitmap::FromBITMAPINFO函数没有附件alpha值,导致转存成png图片的时候出了问题,核心代码如下:

 

//从richedit过来的数据需要这么处理下
LPDWORD lpBase = (LPDWORD)(pBMInfo->bmiColors + pBMInfo->bmiHeader.biClrUsed);int    nOffset = lpBI->biCompression == BI_BITFIELDS ? 3 : 0;pDIBBits = (LPVOID*)(lpBase + nOffset);
pWrapBitmap = Gdiplus::Bitmap::FromBITMAPINFO(pBMInfo, pDIBBits);if (pWrapBitmap){Gdiplus::BitmapData bitmapData;Gdiplus::Rect rcImage(0, 0, pWrapBitmap->GetWidth(), pWrapBitmap->GetHeight());pWrapBitmap->LockBits(&rcImage, Gdiplus::ImageLockModeRead, pWrapBitmap->GetPixelFormat(), &bitmapData);m_pImage = new (Gdiplus::Bitmap)(bitmapData.Width, bitmapData.Height, bitmapData.Stride, PixelFormat32bppARGB, (BYTE*)bitmapData.Scan0);pWrapBitmap->UnlockBits(&bitmapData);}

其中:

pBMInfo为LPBITMAPINFO类型,pDIBBits为数据


阅读全文
0 0
原创粉丝点击