怎么将HDC的一个区域保存为背景透明的图片呢
小崔爱读书 2009-12-07 11:25:35 大家好,我做了一个窗口,在上面可以用鼠标绘制一些曲线,实现一个手写签批的功能,现在我要将写在窗口中的图形保存为背景透明的图片,怎么做呢?我保存后的图片都是背景白色的。
我看ATL::CImage有TransparentColor的方面,但我设置后就提示出错了,说m_nBPP好像必须为4或者8,但我也不知道怎么把我的HDC中图片转成8位位图啊。。。反正很着急。
代码如下,望各位帮忙。
void DC2Pic::savePic(HDC *dc,RECT *rect){
HDC memdc;
HBITMAP memBmp;
memdc=::CreateCompatibleDC(*dc);
memBmp=::CreateCompatibleBitmap(*dc,rect->right,rect->bottom);
SelectObject(memdc,memBmp);
BitBlt(memdc,rect->left,rect->top,rect->right,rect->bottom,*dc,rect->left,rect->top,SRCCOPY);
RECT dRect;
dRect.left=0; dRect.top=0;
dRect.bottom=rect->bottom-rect->top;
dRect.right=rect->right-rect->left;
CImage img;
img.Attach(memBmp);
if(img.IsTransparencySupported()&&(img.GetBPP()==4||img.GetBPP()==8)){
img.SetTransparentColor(RGB(255,255,255));
}
img.Save(L"d:/testpng1.png",Gdiplus::ImageFormatGIF);
}