,intnY2,Рunsignedchar*pData,RGBQUAD*pPalette,intnWidthBytes,CDibObject*pDibObject)Р//图像指针为空,无法操作返回Рif(pDibObject!=NULL)m_pDibObject=pDibObject;if(m_pDibObject==NULL)return(FALSE);Р//分配直方图数据缓存区(数组)Рint*pBuffer=newint[256*4];Р//分配直方图数据缓存区失败Рif(pBuffer==NULL)return(NULL);Р//直方图数据缓存区清零Рmemset(pBuffer,0,(256*4)*sizeof(int));Р//变量定义РDWORDdwGray;Рintx,y;Рunsignedchar*pTemp,ucRed,ucGreen,ucBlue;Р//图像的高度РintnHeight=m_pDibObject->GetHeight();Рswitch(m_pDibObject->GetNumBits())Р{Рcase1:Р//每像素位数为,不处理Рbreak;Рcase4:Р//每像素位数为,不处理Рbreak;Рcase8:Р//每像素位数为Рfor(y=nY1;Р{Рy<=nY2;y++)Р//数据指针定位到图像数据起始位置РpTemp=pData;Р//数据指针定位到图像数据每行的起始零位置pTemp+=((nHeight-1-y)*nWidthBytes);Р//数据指针定位到图像数据每行的起始nX1位置РpTemp+=nX1;Рfor(x=nX1;x<=nX2;x++)Р{Р//pTemp[x]为当前像素值,它为调色板项的索引值,//以此为索引,取出调色板项的相应红绿蓝分量值ucRed=pPalette[pTemp[x]].rgbRed;