急,我做的24位BMP转灰度图,运行出错。望高人指点
CFile file;
file.Open ( "F:\\1.bmp ",CFile::modeRead|CFile::shareDenyNone);
LONG biWidth;
LONG biHeight;
BYTE b,g,r,y;
COLORREF pixel;
file.Seek (18,CFile::begin);
file.Read (&biWidth,4);
file.Seek (22,CFile::begin);
file.Read (&biHeight,4);
CDC *pDC=NULL;
CDC dcMem;
CPoint point;
file.Seek (54,CFile::begin);
int i,j;
for (i=0;i <biHeight;i++)
{
for (j=0;j <biWidth;j++)
{
point=(i,j);
file.Read (&point,4);
pixel=pDC-> GetPixel (j,biHeight-i);
r=GetRValue(pixel);//每个象素点的R分量
g=GetGValue(pixel);//每个象素点的G分量
b=GetBValue(pixel);//每个象素点的B分量
y=0.299*r+0.587*g+0.114*b;//每个象素点的灰度级
dcMem.SetPixel (j,biHeight-i,RGB(y,y,y));
}
}
pDC-> BitBlt(0,0,biWidth,biHeight,&dcMem,0,0,SRCCOPY);
编译没问题,就是运行不了
偶是初学者,大家给指点指点哈!
[解决办法]
CDC* pDC = GetDC();
用完了记得ReleaseDC(pDC);