else{ //竖直方向
g1=(unsigned char)*(lpPtr+LineBytes); //上邻点
g3=(unsigned char)*(lpPtr-LineBytes); //下邻点
}
//三者取中
if(g1>g2){
if(g2>g3) g=g2;
else{
if(g1>g3) g=g3;
else g=g1;
}
}
else{ //g1<=g2
if(g1>g3) g=g1;
else{
if(g2>g3) g=g3;
else g=g2;
}
}
*lpTempPtr=(BYTE)g; //存入新的缓冲区内
}
hDc=GetDC(hWnd);
if(hBitmap!=NULL)
DeleteObject(hBitmap);
//产生新的位图
hBitmap=CreateDIBitmap(hDc,
(LPBITMAPINFOHEADER)lpTempImgDa
ta, (LONG)CBM_INIT,
(LPSTR)lpTempImgData+sizeof(BITMAPI
NFOHEADER) +
NumColors*sizeof(RGBQUAD),
(LPBITMAPINFO)lpTempImgData,
DIB_RGB_COLORS);
if(Hori) //取不同的结果文件名
hf=_lcreat("c:\\hmedian.bmp",0);
else
hf=_lcreat("c:\\vmedian.bmp",0);
_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));
_lwrite(hf,(LPSTR)lpTempImgData,BufSize);
_lclose(hf);
//释放内存及资源
ReleaseDC(hWnd,hDc);
LocalUnlock(hTempImgData);
LocalFree(hTempImgData);
GlobalUnlock(hImgData);
return TRUE;
}
mgData;
//先将原图直接拷贝过来,其实主要是拷贝周围一圈的像素
memcpy(lpTempPtr,lpPtr,BufSize);
for(y=1;y<bi.biHeight-1;y++) //注意y的范围是从1到bi.biHeight-2
for(x=1;x<bi.biWidth-1;x++){ //注意x的范围是从1到
bi.biWidth-2
lpPtr=(char *)lpImgData+(BufSize-LineBytes-
y* |