在图像处理程序中,图像的灰度化是一种常见的操作,它将彩色亮色图像转换为灰度暗色图像,可以借助一些GDI函数实现图像的灰化。比如我们在开发屏幕截图时,先要截取整个桌面的图像保存到位图对象中,然后再对位图中的图像进行灰化处理,在非截取区域显示灰化图像,在截取区域显示亮色图片,如下所示:
实现图像灰化的具体做法是:
1)先调用GetDIBits获取位图中每个像素的RGB色块;
2)遍历每个像素点的RGB值,对每个像素的RGB值做灰化处理(每个RGB值都乘以一个系数,完成灰化)
3)再调用SetDIBits将灰化后的RGB块设置回位图对象中。
相关代码如下所示:
void DoGrayBitmap()
{
CString strLog;
HDC hDC = GetDC( this->m_hWnd );
ASSERT( hDC );
if ( hDC =