C语言 BMP24位变单色,怎么将24位色BMP图片改为单色或16色?(2)

当前位置:我的异常网» VC/MFC » 怎么将24位色BMP图片改为单色或16色?

怎么将24位色BMP图片改为单色或16色?(2)

www.myexceptions.net  网友分享于:2013-01-10  浏览:432次

GetClientRect(hWnd,&rc);

Width           =       rc.right-rc.left;

Height       =       rc.bottom-rc.top;

}

hDC                   =       GetDC(hWnd);             //获取指定的DC

hMemDC       =       CreateCompatibleDC(hDC);

hBitmap=       CreateCompatibleBitmap(hDC,       Width,       Height);

hTmpBmp=       CreateCompatibleBitmap(hDC,       8,       8);

pBmInfoMem       =       (LPBITMAPINFO)GlobalAlloc(GHND,       sizeof(BITMAPINFO)+256*sizeof(RGBQUAD));

pBmInfo       =       (LPBITMAPINFO)GlobalLock(pBmInfoMem);

SelectObject(hMemDC,       hBitmap);

BitBlt(hMemDC,0,0,Width,Height,hDC,0,0,SRCCOPY);

SelectObject(hMemDC,       hTmpBmp);

ZeroMemory(pBmInfo,       sizeof(BITMAPINFO));

pBmInfo-> bmiHeader.biSize       =       (DWORD)sizeof(BITMAPINFOHEADER);

pBmInfo-> bmiHeader.biWidth                           =       Width;

pBmInfo-> bmiHeader.biHeight                           =       Height;

pBmInfo-> bmiHeader.biPlanes                           =       1;

pBmInfo-> bmiHeader.biBitCount                   =       (WORD)GetDeviceCaps(hDC,       BITSPIXEL);

pBmInfo-> bmiHeader.biCompression       =       BI_RGB;

//pBmInfo-> bmiHeader.biCompression       =   BI_RLE8;

GetDIBits(hDC,       hBitmap,       0,Height,       NULL,       pBmInfo,       DIB_RGB_COLORS);

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值